Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problemas con la actualizacion con ADOQuery (https://www.clubdelphi.com/foros/showthread.php?t=60538)

soyyoale 05-10-2008 15:19:57

Problemas con la actualizacion con ADOQuery
 
Hola a todos, tengo el siguiente problema, espero que me puedan ayudar.
Estoy trabajando con ADOQuery y Access, cuando hago alguna actualizacion/inserción a la base tarda mucho en actualizar. Luego de ejecutar la consulta SQL, llamo al procedimiento ADOQuery1.refresh, pero nada, tengo que esperar unos segundos para que funcione.
También intente hacer un close y luego open del ADOQuery pero con el mismo resultado. En otros proyecto trabaje con mysql y funciono de 10. Alguien tiene alguna idea que puede ser?. Gracias

Caral 05-10-2008 15:24:01

Hola
Bienvenido/a al club.
Normalmente Refresh retarda el proceso, no me gusta usarlo.
Es raro que suceda lo que comentas.
Pregunto:
1-La sentencia sql hace llamado a varias tablas.
2-Hay mucha informacion en la tabla.
3-Esta en red
Podrias colocar aqui la consulta slq para echarle un vistazo.
Saludos

soyyoale 06-10-2008 20:57:47

Hola, gracias por la respuesta. La consulta que hago es la siguiente:

select e.id_envio,e.fecha, c.razon_social, e.total , e.estado,c.id,e.nro_comprobante,e.cant_envios from
envios e, clientes c where e.id_cliente = c.id and e.borrado=0

La base se trabaja en local y la pc que uso es bastante rapida. Asi que no es problemas de red ni por la velocidad de la PC.

La información es poca, trea solo un par de numero y algunos otras cadenas.
Ya he probando con refresh y hacer close y open.
El access que esta instalado es Access 2003 y uso delphi7.
Gracias

che 13-10-2008 23:10:21

Saludos
 
holas, vi tu consulta y creo que te falto escribir id_cliente, lo del e.borrado=0 no lo entiendo muy bien¿?. suerte.
[FONT='Verdana','sans-serif']from
envios e, clientes c where e.id_cliente = c.id_cliente and e.borrado=0

[/font]

soyyoale 16-10-2008 19:23:48

La consulta devuelve los resultados de maravillas, solo que cuando agego un registo desde una ventana que hace un INSERT en la base, luego tarda mucho en actualizar. Lo del borrado es una bandera que indica si el registo fue o no eliminado por el usuario. Esto es asi por quiero tener un registro de lo que se elimina.
Saludos

Caral 16-10-2008 19:37:29

Hola
Es un poco dificil conocer lo que pasa, veamos:
Esta es la consulta a dos tablas, e y c.
No veo que esten ligadas, access en una consulta las ligaria con un leftjoin u otro.
Código Delphi [-]
select e.id_envio,e.fecha, c.razon_social, e.total , e.estado,c.id,e.nro_comprobante,e.cant_envios from
envios e, clientes c where e.id_cliente = c.id and e.borrado=0
Ahora indicas que:
Cita:

solo que cuando agego un registo desde una ventana que hace un INSERT en la base, luego tarda mucho en actualizar.
Pregunto:
Que insertas, con que sentencia sql, a que tablas???.
Trabajo con access en red y los datos los recivo muy rapido, hay algo raro en esto, no lo logro entender.
Saludos

Rako 20-10-2008 11:59:37

A mi tambien me pasa algo parecido.....

No consigo refrescar el adoquery sin tener que hacer adoquery1.active:=false , adoquery1.active:=true;

el refresh no hace nada...

cozatl 15-01-2009 17:10:20

A mi me pasa algo similar pero no se porque no se actualiza a menos que abra y cierre el formulario varias veces, trabajo con adoquery a adotable, el query para las modificaciones y el table para verificar cantidad de registros nadamás pero no se actualizan a la primera pero todo trabaja bien sin refrescarse los datos correctamente:
try
conexion.Qclientes.SQL.Clear;
if messagedlg('¿Estás seguro de que quieres eliminar el registro?',mtwarning,[mbOk,mbcancel],0)=mrok then
begin
sentencia:=' delete from clientes '+
' where Id_cliente = ' + '''' + id_cliente.Text + '''';
conexion.Qclientes.SQL.Add(sentencia);
conexion.Qclientes.ExecSQL;
conexion.Qclientes.SQL.Clear;
conexion.Tclientes.Refresh;
showmessage('El registro fué eliminado con éxito');
end
else
showmessage('no se eliminó el registro');


La franja horaria es GMT +2. Ahora son las 15:40:19.

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