Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Aplicación se queda congelada !!!! (https://www.clubdelphi.com/foros/showthread.php?t=81130)

david_uh 13-10-2012 22:15:31

Aplicación se queda congelada !!!!
 
Hola foro tengo una consulta tal vez que me puedan ayudar.

Tengo un programa que lee un archivo *.dbf uso los componentes de BDE un table lee la tabla itero en sus registrso (algo de 1500) y genero una cadena conteniendo una instrucción INSERT de MySQL de todo esto se encarga el prodecimiento genSQL_Insert() que devuelve la mensionanda cadena una vez con la cadena uso zeos para conectarme a mi server mysql remotamente y ejecutar dicha consulta de inserción

dicho codigo esta en un boton:
Código Delphi [-]
procedure Tinicio.Button1Click(Sender: TObject);
begin
  Cursor := crHourGlass;
  Application.ProcessMessages;
  Label1.Caption := 'Ejecutando actualización en el servidor MySQL, espere...';
  Application.ProcessMessages;

  ZSQLProcessor1.Script.Add('truncate table colegiados;');
  ZSQLProcessor1.Script.Add(genSQL_Insert());
  ZSQLProcessor1.Execute;
  Label1.Caption := 'Actualización completada';
  Cursor := crDefault;

end;

el problema es que el programa al hacer clic en el boton
1.- el cursor no cambia a reloj como estoy intentando
2.- en el label aparece "jecutando actualización en el servidor MySQL, espere..." y se queda plantado con el cursor normal


me gustaria saber como solucionar esto ademas implementar una barra de progreso para que el usuario tenga una idea de como va el proceso ademas de que no se quede congelado el programa.

Bueno amigos gracias de antemano por cualquier respuesta

Saludos


David

Young 15-10-2012 17:07:10

Hola David:

1. No entiendo si "genSQL_Insert()" genera una cadena a la vez o el script completo de inserción.

2. Si quieres una barra de progreso yo utilizo en varias cosas los componentes JEDI y existe un componente llamado TJvProgressDialog que para esos menesteres funciona muy bien:

Código Delphi [-]
jvProgressDialog.Show;
// Aqui algo de codigo
jvProgressDialog.Position := 30;
// mas código
jvProgressDialog.Position := 100;
// ...
jvProgressDialog.Hide;

Lo anterior también puede ser en un bucle he ir actualizando Position en concordancia.

Saludos.

david_uh 20-10-2012 03:08:23

hola gracias por responder, la función genSQL_Insert() lo que hace es leer una tabla dbf y mediante un bucle recorro sus registrs y construlo una cadena con una instriccion insert una cadena tal que. Insert into tabla (nombre, direccion) values ('jose','la predera'), etc, osea recojo los datos de la tabla, eso es todo, ahora, ahora lo que yo deseo es que cuando envio esa cadena y ejecuto la consulta de inserción en el servidor remoto ahi la aplicacion se me congela justo en estas lineas
Código Delphi [-]
ZSQLProcessor1.Script.Add('truncate table colegiados;');
  ZSQLProcessor1.Script.Add(genSQL_Insert());
  ZSQLProcessor1.Execute;
hay que esperar como 5 segundos y es aqui donde quisiera aparezca una barra de progreso pero no se como hacerlo ya que no hay bucle ni nada es solo esperar a que Execute termine.

saludos

David


La franja horaria es GMT +2. Ahora son las 12:42:13.

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