Delphi - Problemas modificando una tabla

 
Vista:

Problemas modificando una tabla

Publicado por dakar (2 intervenciones) el 28/11/2008 21:40:13
Hola,
Mi nombre es Jordi, vivo cerca de Valencia, y llevo casi 10 años programando en Delphi.
Saludos a tod@s!!!
Llevo el programa de gestión de un centro médico, el cual empecé el año 99 en Delphi5, y sigo con esa versión por miedo a incompatibilidades.
Uso una BBDD en Interbase. Empecé con v5.5, ahora uso la versión 8.1 (2007).
Nunca he tenido problemas con el programa, pero ahora me ocurre una cosa que no llego a comprender, por eso os pido ayuda:

Una factura incluye varias visitas. Las visitas facturadas las marco Facturado=Si.
Cuando editamos una factura que ya existe, se permite modificar las fechas de facturación
Si se cambian, es necesario desmarcar Facturado=Si de las visitas de la factura original y marcar las nuevas, de la siguiente forma:
-desmarcar: MarcarVisitesFacturades( True );
-marcar: MarcarVisitesFacturades( False );
Las funciones se llaman una detrás de otra, modificando las fechas (Data0 y Data1) antes de la segunda llamada.

procedure TGenFact.MarcarVisitesFacturades( bDesmarcar: Boolean );
//****************************************
begin
with DBmodule.Query do
begin
Close;
try
SQL.Clear;
SQL.Add( 'UPDATE Visita' );
SQL.Add( 'set Facturat = :Fac' );
SQL.Add( 'where Mutua = :CodMut' );
SQL.Add( 'and Tipo = :TipMut' );
SQL.Add( 'and DataFact >= :Data0 and DataFact <= :Data1' );

if bDesmarcar then
ParamByName('Fac').AsString := 'N'
else
ParamByName('Fac').AsString := 'S';
ParamByName('CodMut').AsString := CodMut.Text;
ParamByName('TipMut').AsString := TipMut.Text;
ParamByName('Data0').AsDate := Data0.Date;
ParamByName('Data1').AsDate := Data1.Date;
finally
ExecSql;
end;
end;
end;

Por alguna razón que desconozco, la querie de MarcarVisitesFacturades( False ) no actualiza la base de datos al momento. Es necesario cerrar el programa totalmente y volver a entrar para ver que las visitas están facturadas… ¿Por qué pasa esto?
Únicamente cerrando y abriendo el form de facturación no se actualizan.

En el FormClose hago DBModule.Query.Close;

Esta es la llamada al form de facturación, ¿quizás el “Free” no es correcto? He probado con “Release” y el problema sigue…

with TGenFact.Create(Application) do
try
Tag := 1; // Nova factura
TipMut.Text := aTipMut[ cbMutues.ItemIndex ];
CodMut.Text := IntToStr( aMutues[ cbMutues.ItemIndex ] );
NomMut.Text := cbMutues.Text;
ShowModal;
finally
Free;
end;

Agradezco de antemano cualquier ayuda o pista para llegar a solucionar este problema.

Saludos cordiales,
Jordi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas modificando una tabla

Publicado por Ingeniero (17 intervenciones) el 02/12/2008 14:52:17
...Si tienes un formulario y un query de consulta, lo que debes hacer es cerrarlo (Close) y luego abrirlo (Open) despues de la actualizacion; y si estas usando un Ttable a este debes darle un Refresh (o cerrarlo y abrirlo nuevamente), para que la informacion te aparezca actualizada. Saludos Cordiales...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas modificando una tabla

Publicado por dakar (2 intervenciones) el 03/12/2008 16:44:21
Muchas gracias, lo miraré... :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar