rabenls
Messages postés24Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention 4 août 2007
-
13 mai 2006 à 19:29
rabenls
Messages postés24Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention 4 août 2007
-
14 mai 2006 à 00:45
Bonjour a tous,
J'explique d'abord mon probleme:
Je dois d'abord remplir tous les éléments d'un tabstrip, avec des
champs d'une base de donnée; chaque champ doit etre rempli par un type
d'élément (carte mere, processeur, memoire, ...). J'ai réussi jusque
la, avec une variable de comparaison(varelement), voici ma requete:
"SELECT id, Marque & "" "" & Nom FROM articles WHERE Type=""" & varelement & """ ORDER BY Nom"
Je dois maintenant compliqué cette requete, avec 3 nouvelles variables de comparaisons:
VarSocket, VarCarteGraphique, VarMemoire que je dois comparé avec les
champs: SocketProco, PortGraphique, MemoireType. Les variables sont des
String et les Champs du texte; la requete affiche seulement les
éléments dont la variable et le contenu du champs sont égaux, ainsi que
les champs ou le contenu est vide.
La requete de test suivante fonctionne:
"SELECT id, Marque & "" "" & Nom FROM articles WHERE Type="""
& varelement & """ AND ((1=1) OR (1=1)) AND ((1=1) OR (1=1))
AND ((1=1) OR (1=1)) ORDER BY Nom"
Donc en gros ma requete devrait etre:
"SELECT id, Marque & "" "" & Nom FROM articles WHERE Type="""
& varelement & """ AND ((SocketProco='VarSocket') OR
(SocketProco='')) AND ((PortGraphique='VarCarteGraphique') OR
(PortGraphique=''))
AND ((MemoireType='VarMemoire ') OR (MemoireType='')) ORDER BY Nom"
Cette requete ne crée pas d'erreur mais elle n'affiche pas de résultat
crn_c21
Messages postés302Date d'inscriptionsamedi 24 janvier 2004StatutMembreDernière intervention 4 février 2011 13 mai 2006 à 20:00
Tu dois passer tes variables comme des paramètres :
SELECT id, Marque & "" "" & Nom FROM articles WHERE Type=""" & varelement & """ AND ((SocketProco='" & VarSocket & "') OR (SocketProco='')) AND ((PortGraphique='" & VarCarteGraphique & "') OR (PortGraphique='')) AND ((MemoireType='" & VarMemoire & "') OR (MemoireType='')) ORDER BY Nom
rabenls
Messages postés24Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention 4 août 2007 13 mai 2006 à 20:46
Merci pour ta réponse, la requete fonctionne mais j'ai l'impression que ca bloque quelque part.
Elle ne rempli que un seul élément (le premier a remplir la condition) alors qu'elle devrait remplir plusieurs liste (grace a une fonction
RemplirListe(ListElement(i),"SELECT ...."
Et cela fonctionne lorsque je ne mes pas les conditions VarSocket, VarCarteGraphique, VarMemoire
Il doit y avoir une autre erreur ou condition qui ne se remplit qu'une seule fois dans la requete...
Je cherche aussi de mon coté et j'avance grace a ce forum en tout cas
merci beaucoup
raben
rabenls
Messages postés24Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention 4 août 2007 13 mai 2006 à 21:13
J'execute la requete en cliquant sur un boutton de commande, il initialise affiche un tabstrip de 10 onglets avec chacun une listbox(i) indexée que je dois remplir.
J'ai simplifié l'exemple au maximum: un forum, une listbox, les 3 variables:
Private Sub Form_Load()
VarSocket = "939"
VarMemoire = "DDR"
VarCarteGraphique = "PCI-E"
RemplirListe _
List1, _
"SELECT id, Marque & "" "" & Nom FROM articles"
End Sub
resultat => il remplit la listbox (list1) avec tous les composants de la base de donnée
Private Sub Form_Load()
VarSocket = "939"
VarMemoire = "DDR"
VarCarteGraphique = "PCI-E"
RemplirListe _
List1, _
"SELECT id, Marque & "" "" & Nom FROM articles WHERE ((SocketProco='" & VarSocket & "'') OR (SocketProco=''))"
End Sub
resultat => il remplit seulement la listebox (list1) avec le premiere composant dont SocketProco est vide puis s'arrete, alors qu'il y en a d'autres et il y a des éléments dont (SocketProco='" & VarSocket & "'')
Voila pour les nouvelles
Vous n’avez pas trouvé la réponse que vous recherchez ?
rabenls
Messages postés24Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention 4 août 2007 13 mai 2006 à 21:48
c'est du visual basic 6
je parcours tous les enregistrements grace a une fonction "RemplirListe"
Public Sub RemplirListe(ByRef Liste As Control, ByVal Requete As String)
ViderListe Liste
AjouterAListe Liste, Requete
End Sub
Public Sub ViderListe(ByRef Liste As Control)
If Not ((TypeOf Liste Is ListBox) Or (TypeOf Liste Is ComboBox)) Then Exit Sub
Liste.Clear
End Sub
Public Sub AjouterAListe(ByRef Liste As Control, ByVal Requete As String)
Dim rs As Recordset
If Not ((TypeOf Liste Is ListBox) Or (TypeOf Liste Is ComboBox)) Then Exit Sub
Set rs = ConsulterTable(Requete)
If rs Is Nothing Then Exit Sub
If rs.Fields.Count = 1 Then
While Not rs.EOF
With Liste
.AddItem rs(0)
.ItemData(.NewIndex) = 0
End With
rs.MoveNext
Wend
Else
While Not rs.EOF
With Liste
.AddItem rs(1)
.ItemData(.NewIndex) = rs(0)
End With
rs.MoveNext
Wend
End If
End Sub
Merci de ton aide en tout cas je continue a chercher et si quelqu'un d'autres a une idee
crn_c21
Messages postés302Date d'inscriptionsamedi 24 janvier 2004StatutMembreDernière intervention 4 février 2011 13 mai 2006 à 22:04
Après le If rs Is Nothing Then Exit Sub
essaye un msgbox rs.recordcount pour voir combien d'enregistrement te renvoi le recordset. si c > à 1 c ta function de lecture du rs qui fonctionne pas
rabenls
Messages postés24Date d'inscriptionmardi 15 novembre 2005StatutMembreDernière intervention 4 août 2007 14 mai 2006 à 00:45
Désolé de pas avoir répondu plutot, probleme de pc.
Quelqu'un a résolu le probleme, en fait il fallait formulé la requete comme ceci:
SELECT id, Marque & "" "" & Nom FROM articles WHERE Type=""" & varelement & """ AND ((SocketProco='" & VarSocket & "') OR (SocketProco IS NULL)) AND ((PortGraphique='" & VarCarteGraphique & "') OR (PortGraphique IS NULL)) AND ((MemoireType='" & VarMemoire & "') OR (MemoireType IS NULL)) ORDER BY Nom