PDA

Ver la Versión Completa : Hilos o Bases de Datos SQL Server


manuel Suarez
05-07-2005, 02:12:01
Antes que nada, muchas gracias por detenerse a leer este mensaje, espero me puedan ayudar, gracias.

Estoy haciendo un programa de bases de datos con Delphi 7 y SQL Server 2000, utilizando ADO`s y me gustaria que cuando realizo la conexion con la BD, me mostrara una barra de progreso, "conectando..." y que estuviera un boton para cancelar la conexion, en caso de que esta se tardara mucho tiempo.

Pero ya hice unas pruebas y resulta que mientras se realiza la conexion, todos los frms y todo del programa, se detiene (se traba) y no se puede hacer nada hasta que, o se conecta o me regresa un mensaje de error de que no se pudo conectar...

Muchas gracias por su valiosa ayuda...

DANY
22-07-2005, 06:12:35
la conexion a la base deberia ser casi instantanea.
me parece que vos creas todos los forms juntos y abren sus consultas por defecto, por eso demora.

__hector
22-07-2005, 15:40:40
Prueba poniendo un application.processmessages luego de la conexion, para que el entorno no te parezca frizado. Con respecto a lo del progressbar, el adoconnection tiene una propiedad de timeout para la conexion, la cual puedes tomar para armar la escala del progressbar.

manuel Suarez
22-07-2005, 22:29:29
Estoy haciendo un programa de bases de datos con Delphi 7 y SQL Server 2000, utilizando ADO`s y me gustaria que cuando realizo la conexion con la BD, me mostrara una barra de progreso, "conectando..." y que estuviera un boton para cancelar la conexion, en caso de que esta se tardara mucho tiempo.

Pero ya hice unas pruebas y resulta que mientras se realiza la conexion, todos los frms y todo del programa, se detiene (se traba) y no se puede hacer nada hasta que, o se conecta o me regresa un mensaje de error de que no se pudo conectar...

creo que no me explique bien... cuando inicio el programa, pido la direccion IP del servidor y si esta es correcta y el servidor esta funcionando y todo lo demas, se conecta rápido, pero cuando por "x" cosa no se conecta (IP incorrecta, servidor apagado, etc), se tarda mucho en responder con el mensaje de error, y mientras eso sucede, no se puede hacer nada con el programa, como si se trabara, y yo quisiera que en vez de que se trabe, pueda clickar un boton para cancelar la conexion, o que mientras se tarda todo ese tiempo, mostrar una barra de progreso que este funcionando. pero cuando ocurre eso de que no se conecta, si pongo una barra de progreso, tambien se traba, no se recorre...

Muchas gracias por responder, ya que ya tenia mucho tiempo este mensaje si que me contestaran... les agradezco de nuevo, y ojala me respondan mas rápido para este nuevo mensaje... GRACIAS..

delphi.com.ar
23-07-2005, 00:07:29
El TAdoConnection, tiene una opción "coAsyncConnect", podrías hacer algo como:

begin
ADOConnection.ConnectOptions := coAsyncConnect;
ADOConnection.Open;

{
Si desde un evento externo pones FCancel := True
se tendría que cancelar el intento de conexión
}
FCancel := False;

repeat
Application.ProcessMessages;
if FCancel then
begin
ADOConnection.Cancel;
Break;
end;
until not (stConnecting in ADOConnection.State);
end;


Saludos!