PDA

Ver la Versión Completa : Refrescar tabla al eliminar registro


Shikanda
10-09-2007, 12:47:19
Hola de nuevo.

La duda de hoy es la siguiente. Tengo un tableset que recoge los registros de una tabla. A esa tabla le quiero añadir, modificar y eliminar registros. El problema es que puedo añadir y modificar sin problema, pero cuando quiero eliminar un registro de la tabla no se me refrescan los datos hasta que no cierro y vuelvo a abrir el programa. El código que estoy empleando es el siguiente:


Query.Close;
query.SQL.Clear;
query.SQL.Add('Update Citas_Empleados set descripcion='+chr(39)+chr(39)+',
usuario=null,
nom_usuario='+chr(39)+chr(39)+'
where usuario='+DMCitasCalendario.QIntervaloUSUARIO.AsString+' and intervalo='+DMCitasCalendario.QIntervaloINTERVALO.AsString);
query.ExecSQL;
query.Open;

DMCitasCalendario.QIntervalo.Close;
DMCitasCalendario.QIntervalo.Open;


PD: QIntervalo es el tableset

PD2: Graciasssss

gluglu
10-09-2007, 12:55:47
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('Update Citas_Empleados set descripcion='+chr(39)+chr(39)+', ...
Query.ExecSQL;
Query.Open;

DMCitasCalendario.QIntervalo.Refresh;

Shikanda
10-09-2007, 13:09:49
Qué va, gluglu, ya lo había intentado pero no funciona. El RefreshSQL está bien y el programa no da fallo ni nada (de hecho, al reiniciar el programa, como dije, ya se ve el registro eliminado) pero necesitaba que se actualizase al momento.

Alguna otra idea, tu que siempre encuentras solución a todo?? :)

gluglu
10-09-2007, 13:43:31
Entonces tendrá que ver con las transacciones.

Si 'Query' y 'QIntervalo' tienen la misma transacción no debería haber problema. Como lo hay, supongo que no tendrán la misma transacción.

Supongo que ambas transacciones tendrán el 'nivel de aislamiento' puesto a Read Commited. Si no es así, pincha dos veces con el ratón encima del elemento de transacción que utilizes en cada caso, y lo pones a 'Read Commited' (si necesitas más información al respecto de este tema, te aconsejo consultes la ayuda del foro ya que se ha discutido innumerables veces).

Una vez asegurado esto, lo que te falta es hacer un Commit (o CommitRetaining, según te interese) de 'Query' ya que no estás indicando en ningún sitio que 'grabe' la modificación en ese momento.

Query.Close; // Esto sobre también ya que el Clear cierra automáticamente el Query
Query.SQL.Clear;
Query.SQL.Add('Update Citas_Empleados set descripcion='+chr(39)+chr(39)+', ...
Query.ExecSQL;
Query.Open; // Esto sobra !!
TransactiondeQuery.Commit;

DMCitasCalendario.QIntervalo.Refresh;

Si por el contrario, utilizas la misma transacción debe de funcionarte sin el commit.

Ya contarás si tienes más problemas al respecto.

Shikanda
10-09-2007, 17:22:36
Era justo lo que me decías de las transacciones. Esto de aprender a programar al tuntun es lo que tiene. Ya tengo algo más que estudiar: las transacciones! :D

Muchas gracias por tu siempre imprescindible ayuda