Ver Mensaje Individual
  #4  
Antiguo 10-03-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Reputación: 17
afunez2007 Va por buen camino
Lightbulb

Esta situacion se parece mucho a las utilidades que uo paso haciendo.

Por ejemplo eventualmente un cliente me dice que elimine las facturas anteriores al año 2005, entonces el asunto es que estan las cabeceras y los detalles.

Como lo resuelvo yo? La respuesta es hacer una utilidad que primero te permita seleccionar el rango de facturas que eliminaras podria ser una qry de la siguiente forma:
Código Delphi [-]
qryConsulta.Active:=False;
qryConsulta.Sql.Text:='SELECT *FROM CABECERA WHERE FECHA < '+QuotedStr('31/12/2006');
qryConsulta.Active:=True;

Seguidamente una vez que tengo en la pantalla una consulta con las facturas que deso borrar, hago un ciclo de la siguiente manera:
Código Delphi [-]
qryConsulta.First;
While not qryConsulta.Eof do 
begin
    qryDelete.Sql.Clear;
    qryDelete.Sql.Text:='DELETE FROM DETALLE WHERE NOFACTURA='+QuotedStr(qryConsulta.FieldByName('NOFACTURA').Text);
    qryDelete.ExecSql;
    qryConsulta.Next;
end;

//Una vez terminado el ciclo que borra los Detalles, borramos las cabeceras que se quedaron solas
qryConsulta.Active:=False;
qryDelete.Sql.Clear;
qryDelete.Sql.Text:='DELETE FROM CABECERA WHERE FECHA<'+QuotedStr('31/12/2006');
qryDelete.ExecSql;

Bueno esto es lo que yo suelo hacer, ojala te sirva

Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
Responder Con Cita