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 :

Problème de modification d'un enregistrement [WD17]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut Problème de modification d'un enregistrement
    Bonjour à tous et à toutes,

    Je cherche à modifier un enregistrement dans ma base de donnée. Je fais des test avant de valider la modification pour voir si les champs sont correctement saisie. Après la vérification des champs, j'appelle la fonction Hmodifie mais celle ci au lieu de changer l'enregistrement que j'ai sélectionné, modifie toujours le premier enregistrement.
    Peut-être et surement des gens trouveront directement et me prendront pour un idiot, mais la j'en ai vraiment aucune idée...

    Voici mon code lorsque je clique sur le bouton modifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Une ligne est-elle sélectionné ?
    SI TableSelect(Table_Destinataire)=-1 ALORS 
    	RETOUR
    SINON
    	Info("Ligne sélectionnée")
    FIN
     
    Ouvre(FEN_Fiche_Destinataire,1)
     
    // Rafraichissement de la table
    TableAffiche(Table_Destinataire,taCourantBandeau)
    et voici le bouton de mon code valider (je met que les choses utiles):

    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
     
    //Lecture des informations saisies 
    EcranVersFichier(FEN_Fiche_Destinataire)
     
    SINON SI pval=1 ALORS
    	SI SAI_NumMutuelle<>i ALORS
    		TestChamps() //Ma fonction marche correctement donc je met pas le code
    		SI numrenseigné=Vrai ET NomDrenseigné=Vrai ET emailvalide=Vrai ALORS
    			EcranVersFichier(FEN_Fiche_Destinataire)
    			HModifie(Destinataire,hNumEnrEnCours)
    		SINON
    			AffichageErreurSaisie() 
    			RETOUR
    	    FIN
    SINON
    //blablabla
    FIN
     
    Ferme(FEN_Fiche_Destinataire)
     
    //Valeur de retour de la fenêtre
    MaFenêtre..ValeurRenvoyée=Vrai
    J'ai bien tous mis, j'espère que j'ai été assez clair et désolé pour ceux qui trouveront sa facile, mais je débute et la j'en ai aucune idée donc soyez gentil...

    Merci

  2. #2
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Bonjour,
    avant d'ouvrir votre fenêtre de modification, regardez du côté des fonctions HlitRecherchePremier ou HlitRecherche.

    Bonne suite
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    C'est à dire? Désolé mais je vois pas trop ce que ça ferait si j'utilise ces fonctions.

    J'ai changer ma table d'affichage et maintenant ça marche si je change une donnée en lui mettant un nombre supérieur à toutes les autres données.

    Mais un autre problème est apparu. Par exemple, je veux changer la ligne 9 en lui mettant 30 comme nouvelle valeur. Si 29 et 31 existe, alors il va me remplacer la ligne 31 par la ligne 30 avec ses données et me laisser son ancien numéro, c'est à dire la ligne 9 avec ses données.

    J'avance mais vraiment petit à petit...

  4. #4
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Un problème à la fois jeune homme (1 problème par fil de discussion voir les règles du forum) ....
    Le fait de faire votre sélection dans votre table ne positionne pas pour autant le curseur de données sur l'enregistrement qui vous intéresse ....
    Donc il faut se positionner sur l'enregistrement voulu avant d'entrer en modification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Une ligne est-elle sélectionné ?
    SI TableSelect(Table_Destinataire)=-1 ALORS 
    	RETOUR
    SINON
    	Info("Ligne sélectionnée")
    FIN
    
    HlitRecherchePremier(Destinataire,Destinataire,Table_Destinataire.Destinataire)  // Je suppose bien sûr pour le nom de la colonne et du champ clé
    Ouvre(FEN_Fiche_Destinataire,1)
    
    // Rafraichissement de la table
    TableAffiche(Table_Destinataire,taCourantBandeau)
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Désolé...
    Je viens de rajouter votre ligne, mais sans succès.

    Comme je vous ai dis avant, ce que je comprend pas, c'est que ça marche si c'est la nouvelle valeur max sinon ça marche pas...

  6. #6
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Quel est le code d'initialisation de votre feuille FEN_Fiche_Destinataire ?
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Affichage des enregistrements
    FichierVersEcran()
     
    i=SAI_NumMutuelle
     
    // Valeur de retour par défaut
    MaFenêtre..ValeurRenvoyée = Faux

  8. #8
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Remplacez mon bout de code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Res est un Booleen
    Res = HlitRecherchePremier(Destinataire,Destinataire,Table_Destinataire.Destinataire)  // Je suppose bien sûr pour le nom de la colonne et du champ clé
    Et donnez moi la valeur de Res juste après la recherche

    [EDIT] : vous avez bien remplacé mes parametres de HlitRecherchePremier par vos parametres ? : http://doc.pcsoft.fr/fr-FR/?3044036&...cherchePremier
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Vous pouvez me tutoyer, il n'y a aucun soucis.

    Lorsque j'utilise votre code, mon booléen est bien à vrai.

    Merci de votre aide!

    [EDIT]: Oui mes paramètres sont corrects

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res=HLitRecherchePremier(Destinataire,DestinataireMutuelle,Table_Destinataire.DestinataireMutuelle)

  10. #10
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Il correspond à quel paramètre ton 1 dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ouvre(FEN_Fiche_Destinataire,1)
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    1 pour la modification d'un enregistrement et 2 pour l'ajout d'un enregistrement

  12. #12
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Ok pour le tutoiement
    Qu'est-ce qui se passe si tu changes une valeur clé par une valeur qui existe ?
    Comment est-ce que c'est contrôlé ?
    Dans ta procédure TestChamps() ?

    [EDIT] : Aussi, il y a un EcranVersFichier() en trop mais le problème n'est pas là ....
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Oui dans ma procédure testchamps, en gros je test tous mes champs et pour chaque champs, j'ai un booléen. Si le champs est correct, alors je met ce booléen à vrai et si les trois booléen sont corrects alors je peut modifier dans ce cas là.

    Voici le code:

    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
     
    //TEST SI TOUS LES CHAMPS SONT CORRECTEMENTS REMPLIS
    PROCEDURE Test_Champs()
     
    //TEST SI LE NUMERO DE MUTUELLE EXISTE
    HLitRecherchePremier(Destinataire,Destinataire.DestinataireMutuelle,SAI_NumMutuelle)
    SI HTrouve()=Vrai ALORS
    	num_non_existant=Faux
    SINON
    	num_non_existant=Vrai
    FIN
     
    //TEST SI LE NOM EST RENSEIGNE
    SI SansEspace(SAI_NomDestinataire1) <> "" ALORS
    	Nom_valide=Vrai
    SINON
    	Nom_valide=Faux
    FIN
     
    //TEST LA VERIFICATION DE L'EMAIL
    SI VérifieExpressionRégulière(SAI_EmailDestinaire1, "[-.a-z0-9]+[@][-.a-z0-9]+[.][a-z]{2,4}") = Vrai ET SansEspace(SAI_EmailDestinaire1)<>"" ALORS
    	Email_valide=Vrai
    SINON
    	Email_valide=Faux
    FIN
    [EDIT]: J'ai changé mes noms de booléens depuis ce matin mais ça marche, pas d'inquiétude
    Si j'utilise juste HModifie sans mes tests, bah ça marche, mais du coup, la personne peut remplir n'importe quoi... Pour ça que je veux faire absolument mes tests...

  14. #14
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Et bien le voilà le problème ...
    le fait de faire une recherche dans cette procédure fait que tu perds ton positionnement pour la fiche ....
    tu peux contourner cela en faisant ton contrôle de champs par une requête ou en se repositionnant sur ta fiche après le contrôle (Valeur de i) puis en faisant à nouveau EcranVersFichier juste après pour récupérer la valeur modifiée et ensuite seulement enregistrer ...
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Ah bah je savais pas que sa perdait le positionnement... Merci!
    Par contre, juste une dernière question, quand vous dites vous repositionnez sur la fiche après le contrôle, quel fonction il faut que j'utilise?

    Merci encore en tous cas!

  16. #16
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Celle que tu utilises déjà : HlitRecherchePremier()
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    D'accord je vais essayer maintenant, merci en tous cas!

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Ça marche niquel, merci encore! Je met le sujet en résolu!
    Encore merci car je crois que j'aurai pu chercher encore longtemps vu que sa fais que une semaine que je pratique windev...

  19. #19
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 276
    Points : 739
    Points
    739
    Par défaut
    Bonjour,

    Pour juste tester l'existence d'un enregistrement, je vous conseille d'utiliser la fonction HRecherchePremier (sans le Lit).
    Ça permet de savoir si un enregistrement existe, mais sans le lire (et ça évite donc les multiples lectures)...

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Etudiant en alternance
    Inscrit en
    Novembre 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant en alternance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 68
    Points : 28
    Points
    28
    Par défaut
    Je vais essayer, merci pour le conseil !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème lors de la modification d'un enregistrement
    Par Racha07 dans le forum Hibernate
    Réponses: 0
    Dernier message: 02/06/2015, 12h45
  2. [MySQL] problème de modification d'un enregistrement en php
    Par mvictorinesonia dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 18/08/2014, 17h24
  3. [MySQL] problème de modification d'enregistrement
    Par Michel6359 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/08/2013, 18h03
  4. [débutant] Problème JSplitPane (modif :InternalFrame)
    Par pingoui dans le forum Agents de placement/Fenêtres
    Réponses: 61
    Dernier message: 03/09/2004, 17h01
  5. Gestion des modifications pour un enregistrement
    Par Pascal Jankowski dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2004, 14h09

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