OVH Cloud OVH Cloud

champ identique dans recordset

1 réponse
Avatar
Pierre-Yves
Bonjour,

j'ai un problème de syntaxe sur du code VBA. Je souhaite unitialiser un
recordset avec une requête mettant en jeu deux tables. Dans ces deux tables,
j'ai un champ qui portent le même nom (il se nomme indice). Je souhaiterais
afficher à l'écran le champ indice de la première table ( Marche_Livraison).
Par conséquent, j'utilise un nom d'alias dans ma requête pour chaque table
afin d'identifier précisément la provenance des champs.

Voici une partie de code que j'exécute:

sql = "select * from Marche_Livraison M JOIN [B50-composants] B50 ON
where B50.[T50-2-code comp] = M.article M.typeLigne = '5PREV'"
rsPrev.Open sql, Hera_PDP, adOpenForwardOnly, adLockReadOnly

If (Not rsPrev.EOF) Then

' -- parcours des prévisions de livraisons de pièces
fin = False
rsPrev.MoveFirst

Do

Debug.print rsPrev("M.indice")

fin = rsPrev.EOF
Loop until fin

Ce code ne fonctionne pas. Au debug, on me dit que M. indice n'est pas un
objet de la collection. Quelle solution faut-il adopter dans ce genre de
situation?

Cordialement

1 réponse

Avatar
Raymond [mvp]
Bnjour.

c'est ta requête qui n'est pas bonne , passe en mode création et tu verras
que ta syntaxe n'est pas la bonne.
je te donne le code vba qui fonctionne (testé) sur ce type de requêtes:
Private Sub Commande0_Click()
Dim strSql As String
strSql = "SELECT table1.Numéro, table2.Numéro, table1.Num, table2.Num " & _
"FROM table1 " & _
"INNER JOIN table2 " & _
"ON table1.Numéro=table2.Numéro;"

Dim Db As Dao.Database
Dim Rs As Dao.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset(strSql)
If Rs.BOF Then GoTo Exit_Sub
Do Until Rs.EOF
Debug.Print Rs.Fields("table1.Num") & " ; " &
Rs.Fields("table2.Num")
Rs.MoveNext
Loop
Exit_Sub:
Set Rs = Nothing
Set Db = Nothing
End Sub

je ne comprend pas du tout ta commande sql .

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pierre-Yves" a écrit dans le message de
news:
Bonjour,

j'ai un problème de syntaxe sur du code VBA. Je souhaite unitialiser un
recordset avec une requête mettant en jeu deux tables. Dans ces deux
tables,

j'ai un champ qui portent le même nom (il se nomme indice). Je
souhaiterais

afficher à l'écran le champ indice de la première table (
Marche_Livraison).

Par conséquent, j'utilise un nom d'alias dans ma requête pour chaque table
afin d'identifier précisément la provenance des champs.

Voici une partie de code que j'exécute:

sql = "select * from Marche_Livraison M JOIN [B50-composants] B50 ON
where B50.[T50-2-code comp] = M.article M.typeLigne = '5PREV'"
rsPrev.Open sql, Hera_PDP, adOpenForwardOnly, adLockReadOnly

If (Not rsPrev.EOF) Then

' -- parcours des prévisions de livraisons de pièces
fin = False
rsPrev.MoveFirst

Do

Debug.print rsPrev("M.indice")

fin = rsPrev.EOF
Loop until fin

Ce code ne fonctionne pas. Au debug, on me dit que M. indice n'est pas un
objet de la collection. Quelle solution faut-il adopter dans ce genre de
situation?

Cordialement