yo lo hago con componentes zeos asi
este es un codigo que no he revisado en años, pero es de una aplicacion que funciona
Código Delphi
[-] DMSIU.zcDBase.StartTransaction;
try
with DMSIU.zqryModifica do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM ocxc WHERE clavef = '''+inttostr(iClavef)+'''');
Open;
if not (Eof) then
Begin
bAcepta:=False;
end;
Close;
end;
if bAcepta then
begin
with DMSIU.zqryModifica do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM oconcxc WHERE codigo = ''FAC''');
Open;
iClaveConCxC :=0;
if not (Eof) then
iClaveConCxC:=FieldByname('claveccxc').asinteger;
Close;
end;
sFechacxc:=copy(datetostr(date),7,4)+'/'+copy(datetostr(date),4,2)+'/'+copy(datetostr(date),1,2);
sFechaven:=copy(datetostr(date+30),7,4)+'/'+copy(datetostr(date+30),4,2)+'/'+copy(datetostr(date+30),1,2);
sFechae:=copy(sFechae,7,4)+'/'+copy(sFechae,4,2)+'/'+copy(sFechae,1,2);
with DMSIU.zqryModifica do
begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO ocxc (clavec, claveccxc, clavef, documento, docto, referencia, importe, pagado, fechaaplic, fechavenc, fechaelab, estado, condicion,serie,folio) VALUES('''+IntToStr(iClavec)+''','''+IntToStr(iClaveConCxC)+''',');
SQL.Add(''''+IntToStr(iClavef)+''','''+sDocumento+''','''+sDocumento+''','''+sDocumento+''','''+floa ttostr(nImportet)+''',''0.0'','''+sFechacxc+''',');
SQL.Add(''''+sFechaven+''','''+sFechae+''','''+sEstatus+''','''+'Credito'+''','''+LeftStr(sDocumento ,1)+''','''+Trim(Copy(sDocumento,2,Length(sDocumento)))+''')');
ExecSQL;
Close;
SQL.Clear;
end;
end;
DMSIU.zcDBase.Commit;
except
Application.MessageBox('Error en datos', 'Aceptar', MB_OK);
DMSIU.zcDBase.Rollback;
end;