Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Post Con Demora (https://www.clubdelphi.com/foros/showthread.php?t=73590)

jerry_mdq 03-05-2011 18:13:44

Post Con Demora
 
Hola... Tengo una grilla que toma los datos de un Query. Al hacer Post luego de modificar los datos no encuentro la forma (Cambiando SQL del query, cerrando, refrescansdo, etc) que me muestre los cambios. Salvo que le ponga un Timer y espere 1200 y ahi si. Es como que no termina de grabar a disco los datos del registro. Alguna solución ??? Gracias.

Caral 03-05-2011 19:00:38

Hola
Query1.close, query1.open, es lo logico.
No indicas que BD usas.
Saludos

oscarac 03-05-2011 19:04:32

que base de datos estas usando
cuanta informacion esta grabando
que metodo estas usando para grabar
algo de codigo no vendria mal

afxe 03-05-2011 19:05:28

Qué utilizas? Firebird, Access, Paradox, tablas planas?.

Después del Post, prueba a hacer un CLOSE y un OPEN del Query, si aparecen reflejado las modificaciones realizadas es que el Query tiene cargada la consulta y no la refresca hasta que no se cierre y re-abra. En ese caso te recomiendo que trabajes en modo caché, o con ClientDataSet, o que cierres y abras la tabla tras cada posteo o delete reposicionándote en el registro... pero una respuesta más acertada dependerá de que sepamos qué tipo de datos manejas.

Saludos.

afxe 03-05-2011 19:07:18

Ups... tengo que ser más rápido
 
Vaya... parece que la gente desenfunda rápido... ya han contestado 2 mientras yo escribía mi mensaje...

jerry_mdq 03-05-2011 19:25:52

Respuesta
 
Es verdad. No di detalles del codigo.
El tema es que edito el registro que modifico. Luego pongo

Tabla.Post;

y la grilla no se me refresca. No se que mas datos poner. La base es de Access.

Gracias.

Caral 03-05-2011 19:38:20

Hola
Dices que pones table.post, pero dices que el dbgrid esta enlazado a un query.
Me parece un master detaill, pero solo creo.
No te explicas bien.
Saludos

jerry_mdq 03-05-2011 19:51:10

Problemas con grabacion
 
Mirá... Es Asi. Una Grilla me refleja con un select en la opcion SQL y me muestra los datos. Luego, segun el registro que este parado yo con un numero interno edito en una Tabla aparte y las modificaciones las grabo con POST. Luego al query que maneja la grilla, lo cerre, le cambie el select, lo activo y desactivo, etc. y me sigue mostrando el registro sin cambios. Ahora, si le pongo un timer en 1200 aprox, y luego de eso corro un refresco del query si se ven los cambios. Espero respuestas. Gracias.

Caral 03-05-2011 19:52:59

Hola
Copia y pega aqui el codigo que estas usando en todo este proceso.
A ver donde esta el asunto.
Saludos

jerry_mdq 03-05-2011 19:55:48

Tabla.Edit;
Tabla.FieldValues['Fecha'] := DbFecha.Text;
Tabla.FieldValues['Tipo'] := DbTipo.Text;
Tabla.FieldValues['Num_Sanitario'] := DbNum_Sanitario.Text;
Tabla.FieldValues['Num_Especie'] := ListaEspecies.KeyValue;
Tabla.FieldValues['Num_Producto'] := ListaProductos.KeyValue;
Tabla.FieldValues['Cajas'] := DbCajas.Text;
Tabla.FieldValues['Kilos_Netos'] := DbKilos_Netos.Text;

Tabla.Post;

{RefreshClick(NIL);

Timer.Enabled := True;}
Query.Close;
Query.Open;

Donde Query es de la grilla

Gracias

Caral 03-05-2011 20:03:50

Hola
Bueno:
1- Nunca he usado filevalues, no se el efecto que hara.
2- como defines que el campo que editaste de la tabla corresponde a alguno del dbgrid.
3- Estas seguro que la tabla apunta a la tabla de la BD que ve el query?.
No le veo gran cosa al codigo, solo por confirmacion yo cerraria la tabla despues del post, a ver que pasa.
Tabla.post;
Tabla.close;.
Saludos

oscarac 03-05-2011 20:14:49

Solo por curiosidad
porque usas un query? y no usas la tabla... o es que estas mostrando solo algunos registros (los que determinas con el query) de la tabla

Caral 03-05-2011 20:29:13

Hola
Cita:

Empezado por oscarac (Mensaje 398764)
Solo por curiosidad
porque usas un query? y no usas la tabla... o es que estas mostrando solo algunos registros (los que determinas con el query) de la tabla

Hombre, que curioso eres, recuerda que la curiosidad mato al gato.:D:D:D
Saludos

jerry_mdq 04-05-2011 16:06:11

Hola, Uso Query porque muestro en la grilla valores de un dia determinado y aparte se combina con otras tablas. Es la mejor forma que encontre.
Te cuento que la grabacion me funciono con cerrar la tabla. Ahora me pasa como antes pero para borrar como ves en el codigo. Que hago ? Hice lo mismo y ahora me tarda en mostrar la eliminación...



begin
Tabla.TableName := 'Salidas';
Tabla.Filter := 'Contador = ' + inttostr(Query.FieldValues['Contador']);
Tabla.Active := True;
Tabla.Delete;
Tabla.Close;

Query.Close;
Query.Open;
end;

oscarac 04-05-2011 16:14:46

mmmm
corrigeme si me equivoco...
tu capturas informacion de un determinado dia o dias la muestras en una grilla y luego puedes eliminar, modificar, agregar mas registros verdad?

porque no haces el proceso de "actualizacion" al salir de la grilla?, eliminando primero los datos en la tabla original y luego simplemente grabas todo lo que te "queda" en el query que se muestra en la grilla :rolleyes:

oscarac 04-05-2011 16:15:18

Cita:

Empezado por Caral (Mensaje 398767)
Hola

Hombre, que curioso eres, recuerda que la curiosidad mato al gato.:D:D:D
Saludos

tengo 7 vidas.... bueno ya me quedan como 4...;)

jerry_mdq 04-05-2011 16:34:25

El tema es asi: La grilla se relaciona con un query que tiene el select correcto, y de esa grilla yo saco el numero de registro del query de la grilla para buscar en una tabla y elimino con ese contador. El tema ahora es que con Post y close empezo a funcionar. Pero con Delete no. Se entiende lo que hago ?
La Grabación quedo asi.


Grilla.Height := 318;
BtnAgregar.Visible := true;
BtnModificar.visible := true;
BtnGrabar.visible := false;
BtnCancelar.visible := false;
Tabla.TableName := 'Salidas';
Tabla.Filter := 'Contador = ' + inttostr(Query.FieldValues['Contador']);
Tabla.Active := True;
Tabla.Edit;
Tabla.FieldValues['Fecha'] := DbFecha.Text;
Tabla.FieldValues['Tipo'] := DbTipo.Text;
Tabla.FieldValues['Num_Sanitario'] := DbNum_Sanitario.Text;
Tabla.FieldValues['Num_Especie'] := ListaEspecies.KeyValue;
Tabla.FieldValues['Num_Producto'] := ListaProductos.KeyValue;
Tabla.FieldValues['Cajas'] := DbCajas.Text;
Tabla.FieldValues['Kilos_Netos'] := DbKilos_Netos.Text;
Tabla.Post;
Tabla.Close;
If BtnMostrar.Caption = 'Salidas' Then
Begin
DbFecha.Visible := False;
DbTipo.Visible := False;
DbNum_Sanitario.Visible := False;
ListaEspecies.Visible := False;
ListaProductos.Visible := False;
DbCajas.Visible := False;
DbKilos_Netos.Visible := False;
End;
Query.Close;
Query.Open;



Y la eliminación asi:


if MessageDlg('Desea Eliminar el Registro ???', mtConfirmation, [mbyes, mbno], 0) = mrYes then
Begin
Tabla.TableName := 'Salidas';
Tabla.Filter := 'Contador = ' + inttostr(Query.FieldValues['Contador']);
Tabla.Active := True;
Tabla.Delete;
ShowMessage('El Registro ha sido Eliminado');
Tabla.Filter := '';
Tabla.Close;

Query.Close;
Query.Open;
End;

end;


Que hago mal para que la grabación la tome y la eliminación no... pero si me cambio de dia y vuelvo si. o si refresco a ls 2 segundos tambien.

oscarac 04-05-2011 16:45:59

sabes que se me ocurre

veo que haces un filtro a la base de datos por el numero de contador... no crees que al tener una base de datoas cada dia mas grande.. el filtro de una u otra manera demora?

lo que te recomiendo es buscar el codigo y hacerle el delete

Código Delphi [-]
 
if MessageDlg('Desea Eliminar el Registro ???', mtConfirmation, [mbyes, mbno], 0) = mrYes then
Begin
  Tabla.TableName := 'Salidas';
  Tabla.locate ('Contador', inttostr(Query.FieldValues['Contador'], []);
  Tabla.Delete;
  ShowMessage('El Registro ha sido Eliminado');
  Query.Close;
  Query.Open;
End;

esto funcionaria mucho mas rapido que un filtro

jerry_mdq 04-05-2011 17:07:56

Mirá, el tema es que ahora en la edicion con post y close lo toma perfecto, pero con delete no, si no espero 1 segundo no refresca...

oscarac 04-05-2011 17:12:00

has leido lo que te puse?


La franja horaria es GMT +2. Ahora son las 21:33:09.

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