1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
IBTransaction->StartTransaction();
// on crée un nouvel entête de facture :
IBSQL->SQL->Clear();
IBSQL->SQL->Add("INSERT INTO ENTFACT (EF_NUMPOSTE, EF_DATEFACTURE, EF_HEUREFACTURE, EF_ETAT, EF_CODECLIENT, ... ");
IBSQL->SQL->Add("VALUES (:NP, :DF, :HF, :ETA, :CC, ...)");
IBSQL->ParamByName("NP")->AsString = l_sNomPoste;
IBSQL->ParamByName("DF")->AsDate = P_Entete.DateFacture - 1;
IBSQL->ParamByName("HF")->AsTime = 0;
IBSQL->ParamByName("CC")->AsString = P_InfoClient.sCode;
...
IBSQL->ExecQuery(); <-- exception : violation de la FK içi
// insertion de lignes de facture
IBSQL->SQL->Clear();
IBSQL->SQL->Add("INSERT INTO LIGFACT (ID, LF_NUMLIGNE, LF_TYPELIGNE, LF_CODECONSO, LF_LIBELLECONSO, LF_QUANTITE, ...");
IBSQL->SQL->Add("VALUES (:ID, :NL, :TL, :CC, :LC, :QT, ...)");
IBSQL->ParamByName("ID")->Value = P_Entete.dNumFacture;
IBSQL->ParamByName("NL")->Value = P_pListeConso->pCo_iNumLigne;
IBSQL->ParamByName("TL")->Value = P_pListeConso->pCo_iTypeLigne;
IBSQL->ParamByName("CC")->AsString = P_pListeConso->pCo_sCode;
...
IBSQL->ExecQuery();
IBTransaction->Commit(); // Fin de la transaction. |
Partager