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

IHM Discussion :

[Formulaire-VBA]Modification d'un enregistrement avec DAO


Sujet :

IHM

  1. #1
    Membre du Club Avatar de puppusse79
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 135
    Points : 62
    Points
    62
    Par défaut [Formulaire-VBA]Modification d'un enregistrement avec DAO
    Bonjour,
    J'utilise un code similaire sur un autre formulaire qui fonctionne tout à fait:
    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
    'Bouton Valider du premier onglet "Etat Civil"
      '¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
      Private Sub Ctl1Bt_Valid_Click()
        'Déclaration des recordsets
          Dim oRstLic As DAO.Recordset
     
          'Enregistrement des modifications dans la table licenciés
            Set oRstLic = CurrentDb.OpenRecordset("LICENCIES")
     
              If oRstLic.Fields("Li_NumAuto") = Me.Ctl1Tx_NumAuto Then
                With oRstLic
                  .Edit
                  .Fields("Li_Nom") = Me.Ctl1Tx_Nom
                  .Fields("Li_Prenom") = Me.Ctl1Tx_Prenom
                  ...
                  .Update
                  MsgBox "La mise à jour de la personne a bien été effectué!"
                End With
                Else
                  MsgBox "erreur"
              End If
    Cependant, sur le formulaire qui pose problème, à l'éxécution il m'affiche toujours le message "erreur", donc on dirait qu'il ne parvient pas à faire la comparaison:Li_NumAuto et Ctl1Tx_NumAuto.
    Qu'en pensez-vous?
    Tous les programmeurs sont des auteurs et tous les ordinateurs sont de mauvais acteurs.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    "Erreur" tout seul c'est un peu vague !

    Merci d'être moins précise ou plus floue dans tes indications.
    La ligne qui plante, le numéro d'erreur et sa description.
    Le debogage est souvent nécessaire... que contiennent les variables, les controles, les contenus Fields...

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre du Club Avatar de puppusse79
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 135
    Points : 62
    Points
    62
    Par défaut
    Non, je n'ai pas de message d'erreur, juste mon messbox "erreur" ce qui prouve que le résultat de mon IF est négatif.....
    Tous les programmeurs sont des auteurs et tous les ordinateurs sont de mauvais acteurs.

  4. #4
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    essaye en te positionnant sur le recordset
    Vu ton code, si le premier enregistrement rencontré est celui recherché c'est ok
    sinon, tu aura le msgbox "erreur" qui va s'exécuter. Logique tout ça mais pas
    cohérent, à moin que ta table LICINCIES ne comporte qu'un enregistrement à la fois...
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

  5. #5
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Bonjour,
    Je veux apporter quelques précisions: si LICENCIES est une table et contient plus d'un enregistrements, alors il est presque impossible que tu "tombes" directement sur l'enregistrement à modifier. Il faut, pour cela, que tu fasses un parcour ou une recherche de l'enregistrement adéquat afin que le CURSOR se positionne sur l'enregistrement à modifier.
    Donc je modifierai ton code de la manière suivante:
    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
    'Bouton Valider du premier onglet "Etat Civil"
      '¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
      Private Sub Ctl1Bt_Valid_Click()
        'Déclaration des recordsets
          Dim oRstLic As DAO.Recordset
     
          'Enregistrement des modifications dans la table licenciés
            Set oRstLic = CurrentDb.OpenRecordset("LICENCIES", dbOpenDynaset)
            With oRstLic
              .FindFirst "[Li_NumAuto] = " & Me.Ctl1Tx_NumAuto
              If .NoMatch = False Then
                  .Edit
                  .Fields("Li_Nom") = Me.Ctl1Tx_Nom
                  .Fields("Li_Prenom") = Me.Ctl1Tx_Prenom
                  ...
                  .Update
                  MsgBox "La mise à jour de la personne a bien été effectué!"
              Else
                  MsgBox "erreur"
              End If
    Par ailleurs, il est judicieux de vérifier si l'objet Recordset contient au moin un enregistrement. Donc le code se transforme en:
    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
    'Bouton Valider du premier onglet "Etat Civil"
      '¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
      Private Sub Ctl1Bt_Valid_Click()
        'Déclaration des recordsets
          Dim oRstLic As DAO.Recordset
     
          'Enregistrement des modifications dans la table licenciés
            Set oRstLic = CurrentDb.OpenRecordset("LICENCIES", dbOpenDynaset)
            With oRstLic
              If .RecordCount <> 0 Then
                .FindFirst "[Li_NumAuto] = " & Me.Ctl1Tx_NumAuto
                If .NoMatch = False Then
                    .Edit
                    .Fields("Li_Nom") = Me.Ctl1Tx_Nom
                    .Fields("Li_Prenom") = Me.Ctl1Tx_Prenom
                    ...
                    .Update
                    MsgBox "La mise à jour de la personne a bien été effectué!"
                Else
                    MsgBox "erreur"
                End If
              End If
    Une autre astuce est d'utiliser une requête Action (Mise à jour) dans le style
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE LICENCIES SET Li_Nom = Forms![NomForm]![Ctl1Tx_Nom, Li_Prenom = Forms![NomForm]![Ctl1Tx_Prenom] WHERE Li_NumAuto = Forms![nomForm]![Ctl1Tx_NumAuto];

    Bon courage et @+
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

  6. #6
    Membre du Club Avatar de puppusse79
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 135
    Points : 62
    Points
    62
    Par défaut
    Oui c'est clair, je vais essayé avec une boucle, par contre, maintenant, je comprends pas pourquoi ca marche sur mon autre formulaire alors que la table contient plusieurs enregistrements aussi!!!
    Tous les programmeurs sont des auteurs et tous les ordinateurs sont de mauvais acteurs.

  7. #7
    Membre du Club Avatar de puppusse79
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 135
    Points : 62
    Points
    62
    Par défaut
    Merci mahefasoa, j'essaie de suite et je vous tiens au courant.
    Tous les programmeurs sont des auteurs et tous les ordinateurs sont de mauvais acteurs.

  8. #8
    Membre du Club Avatar de puppusse79
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 135
    Points : 62
    Points
    62
    Par défaut
    Apres plusieurs essais, j'ai enfin trouvé la solution. En fait, je liais uniquement les champs pour lequels il pouvait y avoir un enregistrement fait précedemment sur un autre formulaire. J'ai donc modifié ceci, et maintenant ça marche!!! Merci bcp
    Tous les programmeurs sont des auteurs et tous les ordinateurs sont de mauvais acteurs.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2013, 14h25
  2. ACCESS 2007 Enregistrement avec DAO
    Par meywey dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/07/2010, 18h55
  3. trouver et supprimer un enregistrement avec DAO
    Par chelmi95 dans le forum VBA Access
    Réponses: 4
    Dernier message: 20/12/2008, 18h01
  4. Réponses: 6
    Dernier message: 06/04/2007, 14h14
  5. Réponses: 3
    Dernier message: 23/01/2006, 10h10

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