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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <py_leteste@hotmail.com> a écrit dans le message de
news:em1gu2CjEHA.556@tk2msftngp13.phx.gbl...
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?
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?