Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 16 sur 16
  1. #1
    Invité régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 18
    Points : 6
    Points
    6

    Par défaut Problèmes HerreurDoublon() urgent !

    Bonsoir tous le monde,
    Je suis débutante en Windev et je cherche à gérer ma BDD hyperfile en utilisant la fonction HerreurDoublon() ... mais cette fonction me renvoi à chaque fois FAUX dans tous les cas.

    j'utilise cette fonction dans une procédure générale appelée par un trigger !!

    SVP aidez-moi, c'est urgent!


  2. #2
    Membre Expert Avatar de miripesage
    Homme Profil pro Said
    pesage electronique
    Inscrit en
    novembre 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Nom : Homme Said
    Localisation : Algérie

    Informations professionnelles :
    Activité : pesage electronique
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2009
    Messages : 708
    Points : 1 094
    Points
    1 094

    Par défaut

    bonsoir,
    Sans plus de précision(sans code), il est difficile de savoir ce qui se passe. Postez votre code svp.
    Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul!

  3. #3
    Invité régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    Citation Envoyé par miripesage Voir le message
    bonsoir,
    Sans plus de précision(sans code), il est difficile de savoir ce qui se passe. Postez votre code svp.
    Alors le voici:
    PROCEDURE proctrigger()

    SELON Majuscule(H.FonctionTrigger)

    CAS "HAJOUTE"

    SI Trace ALORS Trace("Trigger avant : Ajout")

    SI HErreurDoublon()=Vrai ALORS
    //abondon de l'action
    H.AFaire="A"
    Erreur("Doublons: Enregistrement Existant !")
    SINON
    //ajouter
    Dialogue("Ajout Réussi !")
    FIN

    CAS "HMODIFIE"
    SI Trace ALORS Trace("Trigger avant : Modification")
    SI HErreurDoublon()=Vrai ALORS
    //abondon de l'action
    H.AFaire="A"
    Erreur("Integrite:: Enregistrement Existant")
    SINON
    //modifier
    Dialogue("Modification Réussi !")
    FIN


    CAS "HSUPPRIME"
    SI Trace ALORS Trace("Trigger avant : Suppression")
    //1 : &Supprimer
    //2 : &Ne pas supprimer
    SELON Dialogue("voulez-vous supprimer cette enregistement ?")
    // supprimer
    Erreur("Erreur: "+HErreurIntégrité())
    CAS 1
    SI HErreurIntégrité()=Vrai ALORS
    //abondon de l'action
    H.AFaire="A"
    Dialogue("Impossible: Enregistrement Lié !")

    SINON
    Dialogue("Suppression Finie !")
    //sortir selon
    FIN

    // ne pas supprimer
    CAS 2
    //abondon de l'action
    H.AFaire="A"


    FIN
    FIN

  4. #4
    Membre Expert Avatar de miripesage
    Homme Profil pro Said
    pesage electronique
    Inscrit en
    novembre 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Nom : Homme Said
    Localisation : Algérie

    Informations professionnelles :
    Activité : pesage electronique
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2009
    Messages : 708
    Points : 1 094
    Points
    1 094

    Par défaut

    Bonjour, votre code est anormale : revoyez ce qui est en rouge :

    Citation Envoyé par princesse_sissi Voir le message
    Alors le voici:
    PROCEDURE proctrigger()

    SELON Majuscule(H.FonctionTrigger)

    CAS "HAJOUTE"

    SI Trace ALORS Trace("Trigger avant : Ajout")

    SI HErreurDoublon()=Vrai ALORS
    //abondon de l'action
    H.AFaire="A"
    Erreur("Doublons: Enregistrement Existant !")
    SINON
    //ajouter
    Dialogue("Ajout Réussi !")
    FIN

    CAS "HMODIFIE"
    SI Trace ALORS Trace("Trigger avant : Modification")
    SI HErreurDoublon()=Vrai ALORS
    //abondon de l'action
    H.AFaire="A"
    Erreur("Integrite:: Enregistrement Existant")
    SINON
    //modifier
    Dialogue("Modification Réussi !")
    FIN


    CAS "HSUPPRIME"
    SI Trace ALORS Trace("Trigger avant : Suppression")
    //1 : &Supprimer
    //2 : &Ne pas supprimer
    SELON Dialogue("voulez-vous supprimer cette enregistement ?")
    // supprimer
    Erreur("Erreur: "+HErreurIntégrité())
    CAS 1
    SI HErreurIntégrité()=Vrai ALORS
    //abondon de l'action
    H.AFaire="A"
    Dialogue("Impossible: Enregistrement Lié !")

    SINON
    Dialogue("Suppression Finie !")
    //sortir selon
    FIN

    // ne pas supprimer
    CAS 2
    //abondon de l'action
    H.AFaire="A"


    FIN
    FIN
    Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul!

  5. #5
    Invité régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    Bonjour,
    Non, ce qui est en rouge :

    TRACE: pour afficher seulement une fenetre ou on pourra voir quelle fonction est en cours

    Dialogue: pour afficher une fenetre avec l'utilisateur afin de savoir si tout a marcher bien.


    Mon problème est avec :HerreurDoublon, HerreurIntegrite renvoie toujours FAUX!

  6. #6
    Expert Confirmé
    Avatar de frenchsting
    Homme Profil pro Claude
    Développeur informatique
    Inscrit en
    juin 2003
    Messages
    1 955
    Détails du profil
    Informations personnelles :
    Nom : Homme Claude
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : juin 2003
    Messages : 1 955
    Points : 3 286
    Points
    3 286

    Par défaut

    Bonjour,

    à quel moment fais tu appel à ta procédure proctrigger() ?
    Elle doit être "mise en place" avec HDécritTrigger() et tu dois l'appeler après les hajoute(), hmodifie(), hsupprime().
    Attention aussi tu dois gérer le hintégrité mais aussi le herreurdoublon juste après l'opération sous peine de "fausser' les valeurs retournées.
    Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
    Pas de question par MP s'il vous plait. Le forum est fait pour cela...

    Make it real not fantasy

  7. #7
    Invité régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    Citation Envoyé par frenchsting Voir le message
    Bonjour,

    à quel moment fais tu appel à ta procédure proctrigger() ?
    Elle doit être "mise en place" avec HDécritTrigger() et tu dois l'appeler après les hajoute(), hmodifie(), hsupprime().
    Attention aussi tu dois gérer le hintégrité mais aussi le herreurdoublon juste après l'opération sous peine de "fausser' les valeurs retournées.
    Bonjour,
    Merci de répondre!
    Effectivement:
    ResultatTrigger = HDécritTrigger("*","HAJOUTE,HMODIFIE,HSUPPRIME",proctrigger, hTriggerAvant)

    Et à chaque appel de l'une des 03 fonctions précédente, la procédure démarre ...

    Mais, les fonctions de gestion d’intégrité et des doublons renvoi faux

    Je donne mon code:
    Code du projet générale
    // Dans le code d'initialisation du projet
    LOCAL
    ResultatTrigger est un booléen


    // changer le mode de tous les fichiers
    //ici, tous les fichier en mode multi-utilisateurs
    HMode(hModeMulti)

    // Création du Trigger AVANT pour tous les fichiers de l'analyse
    ResultatTrigger = HDécritTrigger("*","HAJOUTE,HMODIFIE,HSUPPRIME",proctrigger, hTriggerAvant)

    // Avec "VerifDroitUtilisateur" une procédure globale du projet
    SI ResultatTrigger = Faux ALORS
    DélaiAvantFermeture(1000)
    Erreur("Erreur sur un trigger : " + HErreurInfo)
    RETOUR
    FIN
    proctrigger est déjà donné avant ... (procédure globale)


    Merci de me répondre !

  8. #8
    Expert Confirmé
    Avatar de frenchsting
    Homme Profil pro Claude
    Développeur informatique
    Inscrit en
    juin 2003
    Messages
    1 955
    Détails du profil
    Informations personnelles :
    Nom : Homme Claude
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : juin 2003
    Messages : 1 955
    Points : 3 286
    Points
    3 286

    Par défaut

    Il ne faudrait pas faire plutôt :
    Code :
    1
    2
    3
     
    H.AFaire="A"
    SI HErreurDoublon()=Vrai ALORS
    Je n'ai jamais mis en oeuvre de trigger...
    Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
    Pas de question par MP s'il vous plait. Le forum est fait pour cela...

    Make it real not fantasy

  9. #9
    Membre Expert Avatar de miripesage
    Homme Profil pro Said
    pesage electronique
    Inscrit en
    novembre 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Nom : Homme Said
    Localisation : Algérie

    Informations professionnelles :
    Activité : pesage electronique
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2009
    Messages : 708
    Points : 1 094
    Points
    1 094

    Par défaut

    Bonjour, puisque vous avez décider de gérer vous mëme les erreurs de doublon, intégrité,..., avez vous désactivé la gestion automatique des erreurs?
    Si non, il faut ajouter dans l'initialisation du projet :

    Code :
    1
    2
    // Désactivation de la gestion automatique des erreurs 
    HSurErreur("*",hErrTout,"")
    Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul!

  10. #10
    Invité régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    Bonjour,
    Merci pour vos réponses !

    @ frenchsting:
    Ceci juste pour éviter la fenêtre d'erreur de Windev n'a aucun impact sur HerreurDoublon()
    H.AFaire="A"
    @miripesage:
    Comme j'utilise herreurDoublon() alors la gestion est automatique avec des fonctions prédéfinies, et ce que je veux et d’arrêter l’opération(hajoute, hmodifie) et le message de windev pour que l'utilisateur soit alaise.

  11. #11
    Expert Confirmé
    Avatar de frenchsting
    Homme Profil pro Claude
    Développeur informatique
    Inscrit en
    juin 2003
    Messages
    1 955
    Détails du profil
    Informations personnelles :
    Nom : Homme Claude
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : juin 2003
    Messages : 1 955
    Points : 3 286
    Points
    3 286

    Par défaut

    Question : sur quelle version de windev es-tu ? Et sur quelle version de hf (classic ou CS) ?
    Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
    Pas de question par MP s'il vous plait. Le forum est fait pour cela...

    Make it real not fantasy

  12. #12
    Invité régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    Citation Envoyé par frenchsting Voir le message
    Question : sur quelle version de windev es-tu ? Et sur quelle version de hf (classic ou CS) ?

    Windev 15
    HyperFile Classic

    Merci à vous !

  13. #13
    Invité régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    J'ai essayé ton code mais je suis entré dans une bouvle infinie ...
    Sur le 1er coup herreurDoublon=0
    Sinon du 02eme coup a l'infini =1




    Merci

  14. #14
    Membre Expert Avatar de miripesage
    Homme Profil pro Said
    pesage electronique
    Inscrit en
    novembre 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Nom : Homme Said
    Localisation : Algérie

    Informations professionnelles :
    Activité : pesage electronique
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2009
    Messages : 708
    Points : 1 094
    Points
    1 094

    Par défaut

    Faites un essai avec ceci :

    dans "initialisation du projet"
    Code :
    1
    2
    HSurErreur("*",hErrIntégrité+hErrDoublon+...
                    hErrModification+hErrSuppression,"proctrigger")
    Code :
    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
    PROCEDURE proctrigger()
     
    SELON Majuscule(H.FonctionTrigger)
     
    CAS "HAJOUTE"
     
    SI Trace ALORS Trace("Trigger avant : Ajout")
     
    SI HErreurDoublon()=Vrai ALORS
     // ON rend la main 
    RENVOYER opFinTraitement
    FIN
     
    CAS "HMODIFIE"
    SI Trace ALORS Trace("Trigger avant : Modification")
    SI HErreurDoublon()=Vrai ALORS 
      // ON rend la main 
    RENVOYER opFinTraitement
    FIN
     
    CAS "HSUPPRIME"
    SI Trace ALORS Trace("Trigger avant : Suppression") 
    //1 : &Supprimer
    //2 : &Ne pas supprimer
    SELON Dialogue("voulez-vous supprimer cette enregistement ?")
    // supprimer 
     
    CAS 1 
    SI HErreurIntégrité()=Vrai ALORS
      RENVOYER opFinTraitement
    FIN
     
    // ne pas supprimer
    CAS 2 
    //abondon de l'action
    RENVOYER opFinTraitement
     
     
    FIN
    FIN
    Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul!

  15. #15
    Invité régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    Bonjour tous le monde,

    Effectivement, j'ai résolu mon problème :
    1/ Dans l'initialisation du projet
    Code :
    1
    2
     
    HSurErreur("*",hErrIntégrité+hErrDoublon+hErrModification,"proctrigger")
    2/ Dans la procédure du tigger:
    Code :
    1
    2
    3
    4
    5
    6
    7
     
    CAS "HAJOUTE"
    		SI HErreurDoublon()=Vrai  ALORS
    			Erreur("Doublons: Enregistrement Existant !")
    			Ferme()
    			 RENVOYER opFinTraitement 
    		FIN
    3/ Et enfin, pour optimiser un peu le code pour l'utilisateur:
    Code :
    1
    2
    3
    4
    5
    6
     
    	test=HAjoute(Affaire)
    			//Msg d'ajout
    			IF test=Vrai ALORS 
    				Dialogue("Ajout Réussi !")
    			FIN

    Merci beaucoup pour votre aide à vous tous et spécialement à toi :
    miripesage

  16. #16
    Membre Expert Avatar de miripesage
    Homme Profil pro Said
    pesage electronique
    Inscrit en
    novembre 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Nom : Homme Said
    Localisation : Algérie

    Informations professionnelles :
    Activité : pesage electronique
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2009
    Messages : 708
    Points : 1 094
    Points
    1 094

    Par défaut

    Bonjour, alors appuyez sur et bon développement
    Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul!

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •