1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
//Entête de facture
StructEnteteFA est une Structure
IDFacEnt est un entier
NoFacture est une chaîne de 15
LibFacture est une chaîne de 50
MontantHTX est un numérique(18,2)
MontantTVA est un numérique(18,2)
MontantTTC est un numérique(18,2)
FIN
//Détail de facture
StructDetailFA est une Structure
IDFacDet est un entier
IDFacEnt est un entier
NumLigne est un entier
LibLigne est une chaîne de 50
MontantHTX est un numérique(18,2)
MontantTVA est un numérique(18,2)
MontantTTC est un numérique(18,2)
FIN
//Fonction pour la création (La base de donnée a été nommé "BdOfTest")
FONCTION InsertFacture(LOCAL PPrmsEntete est StructEnteteFA, LOCAL PtaDetails est un tableau de StructDetailFA)
//Init.
bResultat est un booléen = Faux
//Traitement
nNumConnexion est un entier = SQLConnecte(gsNomDuServer, gsUtilisateur, gsLMotDePasse, gsNomDataBase, "OLEDB", hOledbSQLServer, "Trusted_Connection=NO")
SI (nNumConnexion <> 0) ALORS
SQLTransaction(sqlDébut)
QUAND EXCEPTION DANS
sDetailValues est une chaîne = ""
sdfaElement est un StructDetailFA
POUR TOUT sdfaElement DE PtaDetails
SI (sDetailValues <> "") ALORS sDetailValues += ", "
sDetailValues += ChaîneConstruit("(%1, '%2', %3, %4, %5)", sdfaElement.NumLigne, AjouterQuote(sdfaElement.LibLigne), sdfaElement.MontantHTX, ...
sdfaElement.MontantTVA, sdfaElement.MontantTTC)
FIN
SI (sDetailValues <> "") ALORS sDetailValues += "; "
sScriptSQLServer est une chaîne =
[
Use BdOfTest;
DECLARE @EnteteFA UDDT_FACTENT;
Insert INTO @EnteteFA (NoFacture, LibFacture, MontantHTX, MontantTVA, MontantTTC) VALUES ('%1', '%2', %3, %4, %5);
DECLARE @DetailFA UDDT_FACTDET;
Insert INTO @DetailFA (NumLigne, LibLigne, MontantHTX, MontantTVA, MontantTTC) VALUES
] + sDetailValues +
[
EXEC sp_insertfacture @EnteteFA, @DetailFA;
]
sScriptSQLServer = ChaîneConstruit(sScriptSQLServer, AjouterQuote(PPrmsEntete.NoFacture), AjouterQuote(PPrmsEntete.LibFacture), PPrmsEntete.MontantHTX, ...
PPrmsEntete.MontantTVA, PPrmsEntete.MontantTTC)
bResultat = SQLExec(sScriptSQLServer, "SPPPP")
SI (PAS bResultat) ALORS
SQLInfoGene("SPPPP")
SI (EnModeTest() = Vrai) ALORS
ExceptionDéclenche(1, SQL.MesErreur)
SINON
ExceptionDéclenche(1, "Code erreur: " + SQL.Erreur)
FIN
FIN
SQLTransaction(sqlFin) //Validation de la transaction
FAIRE
SQLTransaction(sqlAnnule) //Annulation de la transaction
Erreur(ExceptionInfo())
FIN
SINON
//La connexion a échoué : affichage d'un message explicatif
SQLInfoGene()
Erreur("La connexion à la source de données a échoué." + RC + "Code erreur : " + SQL.Erreur + RC + SQL.MesErreur)
FIN
SQLDéconnecte()
//Finalisation
RENVOYER bResultat |