{Access} .EOF

Résolu
Bonjour,

j aimerais ds un formulaire creer un bouton pour pouvoir naviguer ds mes enregistrement

je comprend pas tte la synthax du .EOF j'ai testé un code mais en vain:
mon code :

Dim dbs As Database
Dim nom As DAO.Recordset
Set nomm = dbs.OpenRecordset("perso", dbOpenTable)

nom.MoveFirst
With nomm

Do Until .EOF
If Me.nom = "dupond" Then
Me.age = 25
Else: Me.age = 1000

End If
.MoveNext
Loop

End With
End sub

si quelqu un pe m expliquer ou est le probleme et surtt m'expliquer pr que je puisse le refaire moi meme

Merci a tous
Configuration: Windows XP
Firefox 3.0.15

14 réponses

  1. Modérateur
    Ta base n'est pas décrite :

    set dbs = currentdb
    Set nomm = dbs.OpenRecordset("perso", dbOpenTable)

    ou

    Set nomm = currentdb.OpenRecordset("perso", dbOpenTable)
    1
    1. Modérateur
      Salut,

      déjà, tu ne dis pas où est l'erreur, donc ça va pas être facile.

      Mais bon, deux ou trois petites choses :

      ton recordset est nommé nomm, ensuite tu le manipules avec nom ou nomm, ça va pas le faire !

      je te propose un truc comme ça :
      nomm.MoveFirst
      while not nomm.EOF
      if nomm!champ1 = ....
      ...
      end if
      nomm.MoveNext
      wend
      
      0
      1. non c moi qui est voulu simplifier en ne mettant que nom mais j en ai oublié désolé je vais essayé ta proposition
        0
        1. g testé mais en vain:

          erreur sur : nomm.MoveFirst

          Membre de methode ou de donné introuvable

          merci
          0
          1. bonjour

            merci de ton aide

            j'obtien une erreur sur :

            Set nomm = dbs.OpenRecordset("perso", dbOpenTable)

            utilisation incorrect de le propriete

            G un formulaire en mode continue basé sur une table appelé perso et je voudrais que qd mon champ nomm est = ... .. then .......
            else
            ......

            je sais que c possible par une requete mais je veux utiliser la fonction .eof merci bcp
            0
            1. Modérateur
              Le fait que ce soit un formulaire ne change rien, le recordset manipule des données de type table/requête.

              Essaye avec un dim nomm as recordset...
              0
              1. ha ca passe mieux!!!!!!!!!!!! mais ya une ereeur plus loin je remet le code:

                Dim dbs As Database
                Dim nomm As Recordset
                Set dbs = CurrentDb
                Set nomm = dbs.OpenRecordset("perso", dbOpenTable)

                nomm.MoveFirst
                While Not nomm.EOF
                If nomm = "dupond" Then l'erreur se situe ici : INCOMPATIBILITE de type sur le nomm
                Me.age = 25
                Else: Me.age = 1000

                End If
                nomm.MoveNext
                Wend

                merci a toi
                0
                1. re

                  g remplacé le code par nomm = '"dupon"d" par me.nomm

                  le code fonctionne mais le nomm.movenext ne va pas car il ne fais que l enregistrement sur lequel je suis
                  0
                  1. Modérateur
                    c'est normal, le me.nom fait réference à un champ d'un formulaire, pas à un champ du recordset.

                    le champ du recordset, c'est nomm!champ...

                    J'ai quand même l'impression que tu confonds formulaire et recordset : un formulaire ne se parcours pas comme un recordset.

                    Tu veux faire quoi, au juste ?
                    0
                    1. bah si tu veux g un formulaire en mode continue

                      j'ai des champ nom prenom age ........
                      g creer un bouton qui dis que si le nom est intel alors l'age est .... sinon l'age devien intel

                      je sais qu une requete ferais l affair mais je veux travailler sur les recordset et .eof

                      merci de m'aider
                      0
                      1. Modérateur
                        ben voui, mais il va falloir faire un refresh du formulaire, après la mise à jour.

                        en mode continu, tu ne pourras pas parcourir ton formulaire avec un recordset, tu n'agiras que sur l'enregistrement courant.

                        un recordset va agir sur les données source du formulaire, pour autant qu'elles sont affichées dans le formulaire.
                        0
                        1. re

                          alors g ecouté ce que tu ma dis g dc remplacé mon nomm.movenext par recordset.movenext et la tout fonctionne sauf que qd j arrive au dernier enregistrement g un message d erreur qui dis qu il ne trouve pas l enregistrement normal !!!!
                          d dc remplacé tt mes nomm.move ...
                          par des recordset.move... et voila tout fonctionne merci!!!!!!!!!!!!!!!!
                          0
                          1. Modérateur
                            pas tout compris... tu peux poster le code ?
                            0
                            1. voici le code

                              Dim dbs As Database
                              Dim nomm As Recordset
                              Set dbs = CurrentDb
                              Set nomm = dbs.OpenRecordset("perso", dbOpenTable)

                              Recordset.MoveFirst
                              While Not Recordset.EOF
                              Recordset.MoveNext
                              If Me.nomm = "dupond" Then
                              Me.age = 25

                              Else: Me.age = 1000

                              End If

                              Wend
                              0