PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WEBDEV 25 → Bonusage des transactions
Bonusage des transactions
Started by Sauveur CONSALVI, Dec., 11 2019 4:25 PM - 5 replies
Registered member
229 messages
Posted on December, 11 2019 - 4:25 PM
Bonjour,
Informaticien en retraite, Je suis en auto formation sur WebDev, par passion des langages informatique
Mais je suis seul dans mon logement, et mes anciens collègues ne le connaissent pas
Aussi, merci de me dire si mes écritures sont correctes, car la manipulation des fichiers est très importante

Lieu : Initialisation du projet après connexion au site déclaration connexion et contexte
NomConnexion est une Connexion
gbOK=EnModeTest(mtProjet)
SI gbOK=Vrai ALORS
// Paramètres de la connexion
NomConnexion..Provider = hAccèsHFClientServeur
NomConnexion..Utilisateur = "NomUtilisateur"
NomConnexion..MotDePasse = MotPasse"
NomConnexion..Serveur = "Serveur"
NomConnexion..BaseDeDonnées = "NomBD"
NomConnexion..Cryptage = hCryptageRC5_16
// Ouverture de la connexion
gbAdministrateur=HOuvreConnexion(NomConnexion)
SI gbAdministrateur=Faux ALORS
Erreur("La connexion au serveur a échouée",ErreurInfo(errComplet))
SINON
//info("Connexion locale - Tests")
HChangeConnexion("*", NomConnexion)
FIN
SINON
NomConnexion..Provider = hAccèsHFClientServeur
NomConnexion..Utilisateur = "NomUtilisateur"
NomConnexion..MotDePasse = MotPasse"
NomConnexion..Serveur = "Serveur"
NomConnexion..BaseDeDonnées = "NomBD"
NomConnexion..Cryptage=hCryptageRC5_16
// Ouverture de la connexion
gbAdministrateur=HOuvreConnexion(NomConnexion)
SI gbAdministrateur=Faux ALORS
Erreur("La connexion au serveur a échouée",ErreurInfo(errComplet))
SINON
//info("Connexion locale - Tests")
HChangeConnexion("*", NomConnexion)
FIN
FIN
ConfigureContexteAWP(ctxDisque,ctxCookie)
DéclareContexteAWP(gsNomProjetBrut,gbOK,gbAdministrateur,gnIDMembre,gsLogicielID,gsRepertoireLogImage,gsRepertoireProvisoire,gsRepertoireTelechergement,gsFichierUploadé, ...
gsTableNomUploadComplet,gsDebut,NomConnexion)


Lieu : Clic sur bouton - serveur - AJAX Activé Pour une création ou une modification
NomConnexion est une Connexion
HTransaction(NomConnexion)
Logiciel.logImage=fExtraitChemin(gsNomFichierCopiéCompletRepimage,fFichier+fExtension)
LIB_Image=gsNomFichierCopiéCompletRepimage
Logiciel.logID=SAI_ID
Logiciel.logSujet=SAI_Sujet
Logiciel.logVersion=SAI_Version
Logiciel.logDescription=SAI_Description
Logiciel.logFichier=SAI_Fichier
//SAI_Fichier=gsNomFichierCopiéCompletFichier
SI gbCreation=Vrai ALORS
gbOK=HAjoute(Logiciel)
SINON
gbOK=HModifie(Logiciel)
FIN
SI gbOK=Faux ALORS
SI gbCreation=Vrai ALORS
Erreur("BTN_Creer_Modifier Erreur lors la création de "+SAI_Sujet,ErreurInfo(errComplet))
GOTO Deblocage
SINON
Erreur("BTN_Creer_Modifie Erreur lors la modification de "+SAI_Sujet,ErreurInfo(errComplet))
GOTO Deblocage
FIN
FIN
SI gbOK=Vrai ALORS
SI gbCreation=Vrai ALORS
Info("Création faite pour "+SAI_ID)
//gbUploadImageFait=Faux
//// initialisationTableVerification()
PageAffiche(PAGE_PC_Gestion_Logiciels,gnIDMembre,gbAdministrateur)
GOTO Deblocage
SINON
Info("Modification faite pour "+SAI_ID)
SelectionTableLogiciel()
GOTO Deblocage
FIN

FIN
Deblocage:
HTransactionAnnule()
// Redonner l'accès au fichier
HDébloqueFichier(Logiciel)


Merci d'avance
Cordialement
SC

--
Cordialement
SC
Message modified, December, 11 2019 - 4:31 PM
Registered member
1,310 messages
Popularité : +3 (3 votes)
Posted on December, 11 2019 - 5:19 PM
- Il me semble que HChangeConnexion("*", NomConnexion) n'est pas nécéssaire apres un Houvre().

- On peut remplacer :
SI gbCreation=Vrai ALORS
gbOK=HAjoute(Logiciel)
SINON
gbOK=HModifie(Logiciel)

Par Henregistre(Logiciel) qui fera lui meme la difference entre nouveau et modif (si on a bien fait un Hraz() avant pour l'ajout)

- Les GOTO a mon avis c'est une ancienne habitude issue de programmation linéaire .. a mon avis c'est FUIR immédiatement et utiliser des procédures (locales.. internes peu importe)
Registered member
1,310 messages
Popularité : +3 (3 votes)
Posted on December, 11 2019 - 5:20 PM
SI gbAdministrateur=Faux ALORS
Erreur("La connexion au serveur a échouée",ErreurInfo(errComplet))

Il faudrait ajouter un FINPROGRAMME ou quelque chose pour empecher que le programme continu a dérouler. ou faire un pageaffiche() vers une page d'erreur.
Registered member
229 messages
Posted on December, 12 2019 - 7:42 AM
Bonjour,
Un grand merci pour ces recommandations

C'est vrais que le GOTO vient de certaines pratiques d'écriture, qui permettent d'éviter les IF imbriqués ou les SELECT CASE
Mais cela marche ...

La remarque pour FINPROGRAMME est très juste, mais je ne trouve pas la bonne syntaxe ...
Je vais chercher, et même créer une nouvelle demande

--
Cordialement
SC
Registered member
144 messages
Posted on December, 12 2019 - 12:31 PM
Déjà je ne vois aucun HtransactionFin permettant de valider la transaction, je ne sais pas si c'est volontaire pour mettre en évidence le principe des transactions car effectivement votre table ne sera jamais mise a jour
ensuite sur le fond la transaction n'a d'intérêt que si il y a des opérations en cascade sur plusieurs tables, dans votre code la il n'y a qu'une table alors s'il s'agit d'un test ok mais le HtransactionAnnule ne fera rien puisque l'opération d'ajout/modif a echoué
Registered member
229 messages
Posted on December, 12 2019 - 3:27 PM
Bonjour,
C'est sure, mon code à besoin de relecture et de test
Merci pour ces remarques

--
Cordialement
SC