Requette parametrer en vb

Résolu
Boudchiche
Messages postés
59
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
25 novembre 2006
- 4 oct. 2005 à 18:58
Boudchiche
Messages postés
59
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
25 novembre 2006
- 5 oct. 2005 à 15:46
Salut
j ai 7 tables dans une base de donnee access et j essaye de faire une requette parametrer depuis vb6 pour afficher le resulatat dans un msflexgrid mais sans resulatat voici code

Private Sub Cmd_Click()
Dim rep
Dim i As Integer
Dim RsRecep As New ADODB.Recordset
Dim strsql As String

rep = InputBox("Entrez le numéro de commande à chercher ?")

strsql = "SELECT Fournisseurs.Fournisseur, Commande.N_Commande,"
strsql = strsql & " Commande.Date_Commande, Matieres.Matiere, Titres.Titre,"
strsql = strsql & " Couleurs.Couleur, Detail_Commande.Observation,"
strsql = strsql & " Detail_Commande.Qte"
strsql = strsql & " FROM Matieres, Articles, Couleurs, Detail_Commande, Titres,Fournisseurs , Commande"
strsql strsql & " WHERE Matieres.Code_Matiere Articles.Code_Matiere AND"
strsql strsql & " Articles.Code_Couleur Couleurs.Code_Couleur AND"
strsql strsql & " Articles.Ref_Article Detail_Commande.Ref_Article AND"
strsql strsql & " Articles.Code_Titre Titres.Code_Titre AND"
strsql strsql & " Fournisseurs.N_Fournisseur Commande.N_Fournisseur AND"
strsql = strsql & "(((Commande.N_Commande)=rep));"

RsRecep.CursorType = adOpenDynamic
RsRecep.LockType = adLockOptimistic
RsRecep.CursorLocation = adUseClient
RsRecep.Open strsql, conn
With Flex
.Rows = RsRecep.RecordCount
For i = 1 To RsRecep.RecordCount
.Col = 0
.Text = RsRecep("N_Commande")
.Col = 1
.Text = RsRecep("Date_Commande")
.Col = 2
.Text = RsRecep("Fournisseur")
.Col = 3
.Text = RsRecep("Matiere")
.Col = 4
.Text = RsRecep("Titre")
.Col = 5
.Text = RsRecep("Couleur")
.Col = 6
.Text = RsRecep("Qte")
.Col = 7
.Text = RsRecep("Observation")
Next
End With
End Sub

Et merci beaucoup

8 réponses

gwoui2
Messages postés
9
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
29 octobre 2005

4 oct. 2005 à 22:17
Je n'ai rien vérifié non plus, mais je suis étonné de la dernière ligne de la requête :
strsql = strsql & "(((Commande.N_Commande)=rep));"
J'aurai mis :
strsql = strsql & " Commande.N_Commande=" & rep & ";"
ou selon le type de donnée du champ N_Commande :
strsql = strsql & " Commande.N_Commande='" & rep & "';"
3
Paladin2107
Messages postés
154
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
5 septembre 2008

4 oct. 2005 à 20:23
Slt

Je n'ai pas vérifié ta requete ms elle me parait tres lourde tu doit pouvoir simplifié

Private Sub Cmd_Click()
Dim rep
Dim i As Integer
Dim RsRecep As New ADODB.Recordset
Dim strsql As String

rep = InputBox("Entrez le numéro de commande à chercher ?")

strsql = "SELECT Fournisseurs.Fournisseur, Commande.N_Commande,"
strsql = strsql & " Commande.Date_Commande, Matieres.Matiere, Titres.Titre,"
strsql = strsql & " Couleurs.Couleur, Detail_Commande.Observation,"
strsql = strsql & " Detail_Commande.Qte"
strsql = strsql & " FROM Matieres, Articles, Couleurs, Detail_Commande, Titres,Fournisseurs , Commande"strsql strsql & " WHERE Matieres.Code_Matiere Articles.Code_Matiere AND"strsql strsql & " Articles.Code_Couleur Couleurs.Code_Couleur AND"strsql strsql & " Articles.Ref_Article Detail_Commande.Ref_Article AND"strsql strsql & " Articles.Code_Titre Titres.Code_Titre AND"strsql strsql & " Fournisseurs.N_Fournisseur Commande.N_Fournisseur AND"
strsql = strsql & "(((Commande.N_Commande)=rep));"

RsRecep.CursorType = adOpenDynamic
RsRecep.LockType = adLockOptimistic
RsRecep.CursorLocation = adUseClient
RsRecep.Open strsql, conn
With Flex
.Rows = RsRecep.RecordCount
For i = 1 To RsRecep.RecordCount
.Row = i
.Col = 0
.Text = RsRecep ![ N_Commande]
.Col = 1
.Text = RsRecep![Date_Commande]
.......
.Rs.movenext
Next
End With
End Sub

Couscous
0
Paladin2107
Messages postés
154
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
5 septembre 2008

5 oct. 2005 à 07:40
oui tu as tt a fait raison je n'ai pas vérifié cette requete.

il faut mettre les ' ' pour les champs de type autre que numérique.
strsql = strsql & " Commande.N_Commande='" & rep & "'"

Couscous
0
Boudchiche
Messages postés
59
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
25 novembre 2006

5 oct. 2005 à 11:02
Slt
Merci pour vos réponces mais malheuresement il me donne le même message "type de donnees incompatible dans l'expression du critere".
Est que vous pouvez me dire aussi comment je peut simplifier ma requette.
Merci
0

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

Posez votre question
tbbuim1
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
5 oct. 2005 à 11:32
Vérifie, si dans la définition de ta table, tous les types correspondent à ceux que tu passes quand tu fais des =
Lorsque tu fais un = numérique, tu n'as pas besoin de mettre des cotes.
0
gwoui2
Messages postés
9
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
29 octobre 2005

5 oct. 2005 à 13:20
Il n'y a pas de lien défini entre les tables Commande et Detail_Commande dans ta requete.

Le plus simple est de commencer par une requête plus simple, et d'ajouter petit à petit les liaisons aux différentes tables, afin de trouver ton probléme
En commençant par exemple par
strsql = "select Commande.N_Commande, Commande.Date_Commande FROM Commande WHERE Commande.N_Commande='" & rep & "';"
0
tbbuim1
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
5 oct. 2005 à 14:21
Ou mieux, tu peux tester la requête sous access avec l'assistant de requête.
tu pourrais faire tes tests plus facilement (si tu sais te servir d'access)
Mais bon, c'est ultra simple, alors ya pas de raison qui peu le plus peu le moins. Il te suffit de double cliquer sur un champ pour le faire s'afficher, donc tu verras rapidement où le bas blaisse.
Fais un copier coller de ta requête sous Access dans la partie SQL et par contre mets une valeur à la place de rep en prenant soin d'enlver les "' & compagnie.
T'as requête se construira d'elle même...
0
Boudchiche
Messages postés
59
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
25 novembre 2006

5 oct. 2005 à 15:46
Merci pour tout j ai touvé le probleme etait que je mettais ='" & rep & "';" alors que je devais mettre juste =" & rep & ";"
Comme on me l as deja dit.
Merci a vous
0