recherche dans un recordset [Résolu]

recherche dans un recordset [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 01-04-2009 à 19:07:44    

Bonjour à tous,
Voila je manipule des données d'une base acces avec adodb et j'ai un petit souci avec un recordset.
Dedans il y a différents champs que je copie dans une feuille et je voudrais en récuperer un de particulier, mais je ne sais pas lequel c'est.
J'ai donc champs1, champs2, champs3 ..................champs8 et qui peuvent être vides  à partir du deuxième.
Je voudrais récupérer le champs avant le vide par exemple si champs5="" je récupère champs4.
J'avais pensé à une boucle du style
FOR i = 1 TO 8
IF champs & i = "" then EXIT FOR
NEXT i
Mais la ça coince au niveau syntaxe pour le nom du champs dans le recordset
Si quelqu'un a une idée
Merci


Message édité par e2prom le 02-04-2009 à 13:57:06
Reply

Marsh Posté le 01-04-2009 à 19:07:44   

Reply

Marsh Posté le 02-04-2009 à 12:01:45    

Bonjour
 
NomDeTonRecordset("champs" & i)
 

Code :
  1. Sub toto()
  2. Set ObjRS = CurrentDb.OpenRecordset("Table1" )
  3.     For x = 1 To 8
  4.         ValChamp = ObjRS ("champs" & x)
  5.     Next x
  6. End Sub


 
Cordialement


Message édité par SuppotDeSaTante le 02-04-2009 à 12:03:39

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-04-2009 à 13:54:55    

Merci pour ta réponse, mais finalement j'ai intégré ceci  
 
..............
...............
Do While Not rs.EOF = True
        Sheets("promo" ).Cells(lig, 1) = UCase(rs!nom)
        Sheets("promo" ).Cells(lig, 2) = rs!prenom
        Sheets("promo" ).Cells(lig, 3) = rs!grade
        Sheets("promo" ).Cells(lig, 4) = rs!datequalification
             
            For dp = 1 To rs.Fields.Count
                If IsNull(rs.Fields(dp)) Then Exit For
            Next dp
         
        Sheets("promo" ).Cells(lig, 5) = rs.Fields(dp - 1).Value

                 
        lig = lig + 1
        rs.MoveNext
    Loop
..........
..........

Reply

Marsh Posté le 02-04-2009 à 14:06:15    

En fait ton rs.Fields(dp) c'est la meme chose que rs("dp" )
Sauf qu'avec la seconde methode tu peux construire le nom du champ, comme par exemple : rs("dp" & i)


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 02-04-2009 à 18:43:01    

OUi c'est bien la reconstruction du nom du champs qui me posait problême.
J'avais une erreur en mettant rs!("champs" & i) .Par contre avec rs!fields(i) je ne sais pas lequel est retourné, en espérant que l'ordre des champs du recorset et le même que celui de la requête.
C'est pour ça que je voulais boucler sur 8 champs et non sur tous avec fields.count

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed