Ver Mensaje Individual
  #1  
Antiguo 28-11-2008
dakar08 dakar08 is offline
Registrado
 
Registrado: nov 2008
Posts: 2
Reputación: 0
dakar08 Va por buen camino
Problemas modificando una tabla

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.

Código Delphi [-]

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 >= ata0 and DataFact <= ata1' );

 

      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? Con “Release” el problema sigue…

Código Delphi [-]

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
Responder Con Cita