IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Erreur sur HAjoute.


Sujet :

WinDev

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Erreur sur HAjoute.
    Bonjour,

    Je rencontre un problème aléatoire dans une mise à jour de base de données
    Le code suivant ajoute un enregistrement dans une de mes tables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		AN_Etude.ETU_Libelle  = ed_NomEtude
    		AN_Etude.ETU_Alias    = ed_Alias
    		AN_Etude.ETU_Excel    = ed_Alias
    		HAjoute(AN_Etude)
    		ed_ID    = AN_Etude.ETU_ID
    Sur certains PC la valeur ed_ID est correctement remplie.
    Sur celui d'un des utilisateurs cela retourne vide.

    Je ne vois pas quelle erreur j'ai pu faire. Je peux remplacer le code par une requête Insert mais dans ce cas comment faire la récupération de l'identifiant ?

    Merci d'avance de vos idées

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    1 129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 1 129
    Points : 1 283
    Points
    1 283
    Par défaut
    Salut,

    As tu essayé de tracer/debugger la valeur ou l'erreur sur Hajoute?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI PAS HAjoute(AN_Etude) ALORS
       Erreur(ErreurInfo(Herreurcomplet))
    FIN

  3. #3
    Invité
    Invité(e)
    Par défaut
    En effet, traces l'erreur du HAjoute
    Si il échoue ce n'est pas catché et donc l'ID renvoyé est vide et tu n'en sais rien du pourquoi du comment.

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    D'abord merci de votre aide.
    Je n'avais publié que la sortie de code qui pose problème.
    Voici le bloc complet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    	QUAND EXCEPTION DANS
    		// actualisation de la table principale
    		AN_Etude.ETU_Libelle  = ed_NomEtude
    		AN_Etude.ETU_Alias    = ed_Alias
    		AN_Etude.ETU_Excel    = ed_Alias
    		AN_Etude.ETU_ParentID = ed_ETUID
    		SI Val(ed_ID) = 0 ALORS 
    			SI HAjoute(AN_Etude) =Faux ALORS LB_OK = Faux				
    			ed_ID    = AN_Etude.ETU_ID
    		SINON
    			SI HModifie(AN_Etude) =Faux ALORS LB_OK = Faux
    		FIN
    		LC_SQL  = "Insert into AN_EtudeDetails "
    		LC_SQL += "(DET_Type, ETU_ID, DET_Gauche, DET_Hauteur)"
    		LC_SQL += "values ("		
    		LC_SQL += TOOLS_EncodeSQL({LC_NomChamp + ".ed_DetailType"}, "C") + ", "
    		LC_SQL += TOOLS_EncodeSQL(ed_ID, "N") + ", "
    		LC_SQL += TOOLS_EncodeSQL({LC_NomChamp + ".ed_Gauche"}, "N") + ", "
    		LC_SQL += TOOLS_EncodeSQL({LC_NomChamp + ".ed_Hauteur"}, "N") + ")"
    		GO_IAD.IAD_ExecuteRequete(LC_SQL)
    		// mode transactionnel
    		HTransactionFin(GO_IAD.LO_IAD_Connexion)	
    		Info("Les informations ont bien été enregistrées")
    		RENVOYER Vrai				
    	FAIRE
    		HTransactionAnnule(GO_IAD.LO_IAD_Connexion)	
    		Info("Des erreurs ont été rencontrées. Les informations n'ont pas été enregistrées", 
    		     "Erreur base : " + HErreurInfo,
    		     "Autre " + ErreurInfo)					
    		RENVOYER Faux
    	FIN
    Justement, ce que je ne comprends pas c'est que l'utilisateur reçoit un message comme celui en PJ et pas celui que j'ai prévu dans le bloc Faire
    Si la fonction plante je devrais rentrer tout de suite en Exception et voir dans HErreurInfo la cause de l'erreur.

    J'ai préparé un EXE permettant de tester le retour de la fonction HAjoute comme indiqué par RainbowBox
    J'attends le retour de l'utilisateur.
    Images attachées Images attachées  

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Si je ne me trompe HAjoute(..) génère une erreur et non une exception, ce qui pour moi explique que l'on ne rentre pas dans FAIRE.

    Ensuite, au cas où il serait rentré dedans, tu fais un HTransactionAnnule(..) avant le HErreurInfo(..). Pour moi, le HErreurInfo(..) te retourne une chaîne vide car c'est l'erreur renvoyée par le HTransactionAnnule(..) qui est prise. Donc tu devrais inverser les 2 lignes.

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Bonjour,

    J'ai eu un retour de l'utilisateur.
    J'avais modifié le code pour récupérer le retour de HAjoute. Cela renvoie vrai et l'ID est bien renseigné (alors que le champ DET_ETU_ID défini Not Null n'est pas renseigné).

    Je n'avais pas pensé à l'ordre entre l'affichage du message et l'annulation de la transaction. Je vais rectifier mais le traitement n'entre pas dans ce bloc puisqu'aucun message ne s'affiche.
    Ca déjà je ne le comprends pas.
    Ce que je ne comprends pas non plus c'est que cette erreur ne se produit pas sur une autre configuration d'utilisateur.

    Je vais éradiquer le problème en gérant la valeur à ajouter dans le champ indiqué Not null dans le message d'erreur mais j'aurais aimé avoir éclairci ces points.

Discussions similaires

  1. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  2. [VBS] Erreur sur "AddWindowsPrinterConnection"
    Par Admin dans le forum VBScript
    Réponses: 5
    Dernier message: 27/03/2004, 16h15
  3. Erreur sur serveur lié
    Par k-lendos dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/03/2004, 15h21
  4. []Erreur sur second emploi collection binding
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2004, 18h02
  5. Erreur sur le TNSListener après installation de 9iAS
    Par Patmane dans le forum Installation
    Réponses: 4
    Dernier message: 04/02/2004, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo