Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : besoin d'aide pour une grosse requete [ Archives Visual Basic / Bases de données ] (rabenls)

samedi 13 mai 2006 à 19:29:46 | besoin d'aide pour une grosse requete

rabenls

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
Si quelqu'un pouvait jetté un oeil
Merci d'avance
raben

samedi 13 mai 2006 à 20:00:16 | Re : besoin d'aide pour une grosse requete

crn_c21

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


samedi 13 mai 2006 à 20:46:18 | Re : besoin d'aide pour une grosse requete

rabenls

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

samedi 13 mai 2006 à 20:48:23 | Re : besoin d'aide pour une grosse requete

crn_c21

Par le biais de quoi exécute tu ta requete?

samedi 13 mai 2006 à 21:13:59 | Re : besoin d'aide pour une grosse requete

rabenls

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

samedi 13 mai 2006 à 21:17:31 | Re : besoin d'aide pour une grosse requete

crn_c21

Si c du .net je connais pas

Par contre je pense ke tu ne parcours pas tous les enregistrements renvoyés et ke tu n'affiche ke le premier

samedi 13 mai 2006 à 21:48:27 | Re : besoin d'aide pour une grosse requete

rabenls

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

samedi 13 mai 2006 à 22:04:07 | Re : besoin d'aide pour une grosse requete

crn_c21

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

dimanche 14 mai 2006 à 00:45:09 | Re : besoin d'aide pour une grosse requete

rabenls

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

IS NULL a la place de = ''

Merci beaucoup en tout cas de m'avoir aider !!




Cette discussion est classé dans : type, and, champs, requete, varelement


Répondre à ce message

Sujets en rapport avec ce message

vb.net + requete SQL sur un champs "date" [ par jimmy28 ] salut a tous,J'ai une question toute bete à laquelle je ne sais répondre: J'ai une database access2003 avec une table qui comprend plusieurs champs, t requete pour faire une somme [ par icomicar ] Salut les amisvoila je realise une application en vb6.et je voudrais faire la sommes de toutes les heures d'abscence pour une classe d'eleves pendant Access VBA - Requete - fonctions sur les champs [ par cyrilmullard ] Bonjour a tous, Découpage de chaîne [ par elisabeth_nov ] bonjour,mon pb= je possede un fichier dont voici une ligne:0032-1DM       ;SUPPORT MOULEUSE 1DM               ;SUPPORT Requete ne fonctionne pas, type incompatible [ par tiguy21 ] Salutjai un petit problemevoici ma requete sqlrs2.Open "select * from mp3 where numero = '%" + lstMP3.ItemData(lstMP3.ListIndex) + "%'", conn, adOpenK Suppression des champs vides dans une requete [ par flavien44 ] Bonjour,Je souhaite effectuer une requette pour une base de donnée Access, dans laquelle les champs vides n'apparaissent pas.C'est a dire que si un ch contrôle sur les champs de saisie VB [ par djimson ] Salut à tous. J'ai des problèmes pour faire des contrôles sur les champs de saisie. Je veux par exemple faire de sorte qu'on ne puisse pas saisir du t If requete du type http://127.0.0.1:port alors ... [ par Loozerteam ] Bonsoir la communauté,après une multitude de recherches, je chercherais une solution qui me permettrait d'exécuter une suite d'évènement si une requèt Champs d'un type [ par gambi01 ] bonjour,J'ai défini un typeType TTest    Champ1 As Integer    Champ2 As IntegerEnd TypeY a t'il un moyen d'énumérer les champs qui composent mon type. requete [ par Sismic22 ] Salut! J'ai un probleme lors de l'éxécution d'une requete. Il m'affiche un message d'erreur : Type de données incompatibles dans l'expression du crit


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.