jijidiscover
Messages postés65Date d'inscriptionjeudi 4 octobre 2007StatutMembreDernière intervention24 mars 2009
-
16 déc. 2007 à 21:38
jijidiscover
Messages postés65Date d'inscriptionjeudi 4 octobre 2007StatutMembreDernière intervention24 mars 2009
-
19 déc. 2007 à 14:17
Salut tous,
j'ai inserer plusieurs combo dans un formulaire:
société,service,catégorie, departement, qualification.
les données se trouve dans une base de données sqlserver
chaque donnée appartient à une table
le problème c ke j'arrive pas à mettre chaque données dans le combo correspondant.
ce code me permet d'afficher tous les données dans un seul combo.
j'ai essayer de séparer les requetes select, le premier combo s'affiche correctement mé le deuxième m'indique un message d'erreur 'cette operation n'est pas permis si l'objet est ouvert'
<li>PrivateSub Form_Load()
</li><li>Adodc2.CursorLocation = adUseClient
</li><li>Adodc2.CursorType = adOpenDynamic
</li><li>Adodc2.ActiveConnection = p_adoConnect.ConnectionString
</li><li>Adodc2.Open "SELECT Société.[Libellé sct], département.Libellé, Service.[Libellé service],Catégorie.Libellé_CAT,[Groupe horaire].[Libellé groupe] , qualification.[Libellé qtl] FROM Société CROSS JOIN Service CROSS JOIN Catégorie CROSS JOIN département CROSS JOIN qualification CROSS JOIN [Groupe horaire] ORDER BY Société.Id_société"
</li><li>i = 0
</li><li>DoWhileNot Adodc2.EOF
</li><li>Combo1(1).AddItem Adodc2.Fields("Libellé sct") + "" + Adodc2.Fields("Libellé") + "" + Adodc2.Fields("Libellé service") + "" + Adodc2.Fields("Libellé_CAT") + "" + Adodc2.Fields("Libellé groupe") + "" + Adodc2.Fields("Libellé qtl"), i
</li><li>i = i + 1
</li><li>Adodc2.MoveNext
</li><li>Loop</li><li>EndSub</li>Merci pour votre aide
Si c'est la requête :
Combo1(1).AddItem Adodc2.Fields("Libellé sct") + "" + Adodc2.Fields("Libellé") + "" + Adodc2.Fields("Libellé service") + "" + Adodc2.Fields("Libellé_CAT") + "" + Adodc2.Fields("Libellé groupe") + "" + Adodc2.Fields("Libellé qtl"), i
textbox1.text = "SELECT Société.[Libellé sct], département.Libellé, Service.[Libellé service],Catégorie.Libellé_CAT,[Groupe horaire].[Libellé groupe] , qualification.[Libellé qtl] FROM Société CROSS JOIN Service CROSS JOIN Catégorie CROSS JOIN département CROSS JOIN qualification CROSS JOIN [Groupe horaire] ORDER BY Société.Id_société"
Si j'ai répondu à côté par rapport à ta demande essaye d'être un chouilla plus clair pour que je t'aide (relis ton post en pensant que je ne connais pas ton projet et ton IG). A tout tiens moi au jus je ferais au mieux pour t'aider.
jijidiscover
Messages postés65Date d'inscriptionjeudi 4 octobre 2007StatutMembreDernière intervention24 mars 2009 18 déc. 2007 à 14:10
Bonjour,
je vai essayé d'etre beaucoup plus clair et merci pour ton aide
la table département contient
id_département
Libellé
suite à tes conseils le code devient comme suit:
Adodc2.CursorLocation = adUseClient
Adodc2.CursorType = adOpenDynamic
Adodc2.ActiveConnection = p_adoConnect.ConnectionString
Adodc2.Open " select Libellé from département order by id_département"
i = 0
Do While Not Adodc2.EOF
Combo1(4).AddItem Adodc2!Libellé, i
i = i + 1
Adodc2.MoveNext
Loop
Adodc2.Close
ce code permet l'affichage du nom de département dans le combo
je veux que id_département s'affiche dans le combo et libéllé departement s'affiche
dans le textbox qui est juste à coté dans le formulaire.
j'ai essayé donc ce syntaxe
Adodc2.Open " select id_département, Libellé from département order by id_département"
i = 0
Do While Not Adodc2.EOF
Combo1(4).AddItem Adodc2!id_département, i
Textd.Text = Adodc2!Libellé
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 18 déc. 2007 à 14:19
Ok d'accord donc en fait tu veux qu'en fonction du N° de département choisi dans la combo, le bon libéllé de département s'affiche dans la textbox. A ce moment là, joue sur l'événement LostFocus de ta combobox pour faire ta requête : "select Libellé from département Where id_département = ' " & combobox.text & " ';
puis ton Textd.Text = Adodc2!Libellé
Attention, n'oublie pas les simple quotes entourant la valeur texte de ta combo sinon ça plante et je ne sais pas si ta base est vraiment comme ça mais les accents sont à proscrire (c'est un conseil).
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 18 déc. 2007 à 15:05
Oui désolé si j'ai manqué de précision.
Ta requête :
"select Libellé from département Where id_département = ' " & ComboBox.Text & " ';"
Le combobox.text correspond à la valeur du texte lue dans ta combo. Je n'ai pas utilisé le nom de ton objet qui est je crois Combo1(4).
Attention l'événement lost focus est super traitre. Car si tu es sur ta combobox et que tu veux modifier quelque chose ailleurs, le lost focus est déclenché et donc ta requête va te faire une erreur. Vérifie bien la valeur du champs texte de la combo avant ta requete.
Exemple :
If Combo1(4).Text <> "" then
ta requête
else: exit sub
end if
jijidiscover
Messages postés65Date d'inscriptionjeudi 4 octobre 2007StatutMembreDernière intervention24 mars 2009 18 déc. 2007 à 15:31
Cette fois y a pas un erreur de syntaxe mais combo est vide
Private Sub Form_Load()
Adodc2.CursorLocation = adUseClient
Adodc2.CursorType = adOpenDynamic
Adodc2.ActiveConnection = p_adoConnect.ConnectionString
Adodc2.Open "select Libellé from département Where id_département = ' " & Combo1(4).Text & " ';"
'Textd.Text = Adodc2!Libellé
i = 0
Do While Not Adodc2.EOF
Combo1(4).AddItem Adodc2!id_département, i
Textd.Text = Adodc2!Libellé
i = i + 1
Adodc2.MoveNext
Loop
Adodc2.Close
end sub
Private Sub Form_LostFocus()
If Combo1(4).Text <> "" Then
Adodc2.Open "select Libellé from département Where id_département = ' " & Combo1(4).Text & " ';"
Else: Exit Sub
End If
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 18 déc. 2007 à 15:46
C'est pas grave t'inquiètes on y est tous passé (regarde mon pseudo).
Attention il faut prendre l'événement LostFocus de la combobox pas de la form
Private Sub Form_LostFocus() AIE AIE .
Dans tes listes déroulantes en haut de l'écran tu dois en avoir 2. Dans celle de gauche choisi la combobox que tu veux et dans celle de droite l'événement lost focus.
L'erreur de syntaxe vient du fait que ta combo est vide ? ou se situe elle exactement, quelle ligne ?
Si c'est la combo vide qui te gène regarde mon post au dessus je t'ai mis :
If Combo1(4).Text <> "" then
ta requête
else: exit sub
end if
Cela permet lors du lost focus que si t'as combo est vide de ne pas faire de requête avec une condition WHERE id_Departement = ___ ;
Je pense que ton problème se situe donc le lost focus que tu fais sur la form et non sur la combo.
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 19 déc. 2007 à 08:04
Alors que je t'explique,
Tout d'abbord je fais du .Net et uniquement du .Net. Donc si tu veux je te donne un exemple en VB que je trouve sur le forum.
Ex :
<li>'Declaration</li><li>Dim env As rdoEnvironment
</li><li>Dim con As rdoConnection
</li><li>Dim rdorequest As rdoQuery
</li><li>Dim RESULT As rdoResultset
</li><li></li><li>'La connexion</li><li></li><li>Set env = rdoEnvironments(0)
</li><li>Set con = env.OpenConnection("", rdDriverNoPrompt, False, "UID=sa;PWD=your_pswd;Database=name_base_sql;server=name_server;driver={SQL Server};DSN=''")
</li><li></li><li>'votre requete</li><li>request "Select * from name_table where name_champ " & "'" + valeur + "'"
</li><li>Set RESULT = con.OpenResultset(request, rdOpenKeyset, rdConcurLock, StillExecuting + rdExecDirect)
</li><li></li><li>' nombre d'enregistrement de la base sql</li><li>Nbr = RESULT.RowCount
</li><li></li><li>DoWhileNot RESULT.EOF
</li><li>' votre traitement, Ajout dans ta combo</li><li>loop</li>Pour info la clause WHERE est une condition.
Donc si on reprends le concept de la requête dite SELECT.
SELCT (On selectionne ce que l'on veux afficher (toi tes id de dep) FROM (La table de la base de données)
WHERE (Ce n'est pas obligatoire si tu t'arrête avant le WHERE tu affiches toutes les valeurs selectionnées en fonction de la table) (La condition : Ex id_Dep = 01 : Avec cette condition, tu affiche uniquement le departement 01 L'ain OKI). Un tutoriel pour le sql. ici :
http://sgbd.developpez.com/cours/sql/sqlnice.pdf
Réflechis un peu avant de lancer ce code il faut que tu modifie des trucs (User, Pwd, DNS, ...)
A toi de jouer bon courage.
Par contre je pense qu'on va se faire jeter à chatter ici au bout d'un moment. Passe par des messages privés pour que je puisse continuer à t'aider. A toute.