Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
thread

ante todo buenas tardes, como siempre un consulta
tengo un form (form1) con un button , este ejecuta una consulta SQL (delphi 7, sqlserver 7), como esta query tarda mas de 4 minutos, la hago en un thread (para que no se conjele la aplicacion), pero no se como mostrar el resultado en un form2, ya que he leido que un thread se lleva mal con las VCL y me esta dando error de ventana no identificada, si alguien me puede ayudar desde ya gracias
hugo
Responder Con Cita
  #2  
Antiguo 22-07-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 18
rgstuamigo Va por buen camino
Arrow

Bueno...me imagino que tu consulta SQL debe ser bien compleja o traer demasiados datos para dure tanto tiempo(4 minutos), quizás te podríamos ayudar a optimizarla, aunque personalmente trabajo con MySQL pero alguna ves usé tambien MS SQL server .
Si se trata de traer demasiados datos pues supongo que puedes usar un componente ClientDataSet que es muy potente para esos menesteres tal como se explica aquí.
Si la consulta no trae "demasiados" datos, pues creo que con un simple Dataset(Query, Table) puedes hacerlo,y mostrar los resultado en un componente DBGrid .
De todas formas sería muy conveniente que dieras mas datos, en especial el por qué tu consulta tarda demasiado? .
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 23-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
disculpa la omision del dato, la base de datos se consulta por wan, es por eso que la consulta tarda demaciado, no son gran cantidad de datos los que devuelve el query, pero al ser por wan no siempre es rapido y tengo que pensar en el peor escenario.
lo que mas o menos quiero hacer (yo despues lo modificaria) es que el form1 invoque (con un button) al thread y cuando este finaliza me muestre los datos en un dbgrid (o cualquier otra forma) en un form2, pero como ya estoy probando y leyendo el thread no se lleva con las VCL
desde ya gracias
hugo
Responder Con Cita
  #4  
Antiguo 23-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por calco_hugo Ver Mensaje
ya que he leido que un thread se lleva mal con las VCL y me esta dando error de ventana no identificada, si alguien me puede
Bueno, eso de que los Threads se lleven mal con las VCL, no se...

No se si te refieres a que, para realizar conexiones a Bases de Datos es recomendable (yo diría obligatorio) realizar nuevas conexiones en cada Thread, porque las librerías de conexión (al menos ADO) no son Thread-safe. Eso no quiere decir "que se lleven mal"; Si haces las cosas bien se "llevan perfectamente"...

Si quieres mostar los datos en un DBGrid, por ejemplo, lo que podrías probar es a realizar la consulta en el thread (que es lo qe más tarda) y luego una vez que tengas los datos, mostrar los datos en el DBGrid utilizando el procedimiento Syncrhonize para evitar problemas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 23-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
gracias neftali, vere por ese lado entonces
hugo
Responder Con Cita
  #6  
Antiguo 23-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
perdon la insistencia, pero sigo sin encontrar la solucion con el thread, la situacion es mas o menos asi, ejecuto el thread, cuando finaliza necesito que me habra un form y ahi mostrar los datos de las query, lo solucione, mostrando el form antes de mandar el thread, pero no creo que esta sea la solucion, al menos no me parece elegante, no se , soy un poco menos que novato
desde ya gracias
hugo
Responder Con Cita
  #7  
Antiguo 26-07-2010
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

La clase Thread cuenta con un evento llamado OnTerminate, ese evento lo podrías usar para mandar llamar la ventana una vez finalice la ejecución del hilo...


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema con thread pulpin C++ Builder 28 19-05-2008 21:05:46
Thread Paulao Varios 1 09-05-2008 01:42:34
Thread OnShow walito Varios 4 17-10-2007 01:36:24
Thread bendito thread...se me pierde la ventana Seba.F1 API de Windows 5 02-02-2006 01:16:30
Hilos o Thread DarkByte Varios 7 20-11-2003 18:10:44


La franja horaria es GMT +2. Ahora son las 01:33:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi