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 1
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 1
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
Rejoignez-nous