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;
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