Savoir si on est a la fin d'un enregistrement

Résolu
cs_flavien44 Messages postés 19 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 juin 2007 - 29 juin 2007 à 15:47
cs_flavien44 Messages postés 19 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 juin 2007 - 29 juin 2007 à 16:21
Bonjour

Je veux sous Access 2002 remplir mes text box en parcourant mes tables.
J'ai donc installer la reference Microsoft DAO 3.6Object Library,
et je me sert de recordset et de requete SQL pour parcourir mes données.
Cependant mon probleme est que:
 J'ai une requette qui me retourne une seule ligne de donnée (ce que je souhaite)
Je souhaite parcourir cette ligne jusqu'a la fin pour a chaque champ remplir un text box
Mais je ne sais pas lorsque j'arrive a la fin et donc il me met une erreur comme quoi le champ que je cherche n'existe pas.
Donc comment puis-je savoir que j'arrive a la fin de ma ligne?

J'ai essayer oRst.EOF, mais il ne passe jamais a True, donc je pense que ce n'est pas ca, ou alors j'ai oublier de faire des inintialisations?

Pour info, voici mon code avec EOF (qui ne marche pas evidement):

I = 1
Do While oRst.EOF = False
    'While we are not at the last case of the record
    If oRst.Fields(I ).Value > 0 Then
        'Write the field (e.g.: Software)
        Call Write_In_Box(Current_Line, "Middle", oRst.Fields(I ).Name)
        'Write The value
        Call Write_In_Box(Current_Line, "Right", oRst.Fields(I ).Value)
        Current_Line = Current_Line + 1
    End If
    I = I + 1
Loop

D'avance Merci pour vos reponses

10 réponses

antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 3
29 juin 2007 à 15:55
nb_champs = rst1.Fields.Count
Do while nb_champs > 0
      (...)
      nb_champs = nb_champs - 1
Loop

Rem = à voir s'il faut mettre ">0" ou ">=0", testes et tu verras...
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 juin 2007 à 16:05
manque un truc assez important dans ton code...

oRst.MoveNext
(a faire avant ton Loop)
0
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 3
29 juin 2007 à 16:08
d'après l'énoncé il y aurait qu'un seul enregistrement et il parcours les champs, donc il devrait plutot incrémenter le i... :) voilou
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
29 juin 2007 à 16:11
Oui en effet, ca sert a rien de faire currentline + 1  ou I + 1 ou encore rst1.Fields.Count -1.

Ca peut etre utile mais pas pour te déplacer dans ton recordset. le pb est que tu restais "coincé" sur le premier enregistrement.

Pour cela tu as :

oRst.MoveFirst
oRst.MoveLast
oRst.MoveNext
oRst.MovePrevious

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_flavien44 Messages postés 19 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 juin 2007
29 juin 2007 à 16:12
Trop Fort.

Ca marche avec la solution de Antoine, merci beaucoup, Je n'ai pas tester les autres car c'est celle ci que j'ai trouver en premier, désolé pour les autres.
En tout cas merci a tous pour vos réponse et votre rapidité!
Et surtout Merci a Antoine.

A bientot
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
29 juin 2007 à 16:15
OK,

mais on est d'accord sur le fait que

Do While oRst.EOF = False ne sert a rien puisqu'il ne se deplace pas
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 juin 2007 à 16:16
d'accord, tu veux boucler, sur chacun de tes champs...
j'avais pas compris cela comme ca

y'a plus rapide :

Dim oField As Field

For Each oField In oRst.Fields
'# ensuite tu manipules ton champs
'# avec oField.Value
'# et oField.Name
Next oField
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
29 juin 2007 à 16:17
Vérifie que tu as bien tout tes champs car le champ d'indice 0 existe bien je pense donc >=0 ou encore <> 0.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
29 juin 2007 à 16:18
J'aurais fait pareil Renfield car ca évite tout probleme de cette maniere mais bon, flavien44 a trouver son bonheur, c'est ce qui compte finalement. 
0
cs_flavien44 Messages postés 19 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 juin 2007
29 juin 2007 à 16:21
Oui je voulais agir sur un seul enregistrement .
Et je suis entierement d'accord qu'il y avait (beaucoup)plus simple, mais cette solution me convient car j'ai en plus besoin de savoir combien j'ai de champs.
J'ai verifier j'ai tous mes champs.

Encore merci a tous
0
Rejoignez-nous