Intégrer un combo-box dans un tableau msflexgrid

yangoal25 Messages postés 51 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 juin 2008 - 19 janv. 2006 à 09:17
cs_abasconet Messages postés 1 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 3 mars 2008 - 3 mars 2008 à 00:25
Bonjour à tous,

Dans le cadre de mon TFE, je conçois une application de gestion de stock fourniture au sein d'une administration.

J'aimerais créer un tableau et intégrer dans toute les cellules de la 1ère colonne un combo-box.

Dans ce combo-box, j'aimerais faire un lien vers plusieurs table de ma BD access.
Je le vois dans le style de l'explorateur de windows :
Exemple :
Informatique (Table "Categorie")
Matériel (Table "Sous-Categorie1")
Clé usb (Table "Sous-Categorie2")
INTUIX 1GB (Table "Fourniture")
Tapis de souris (Table "Fourniture")
DVD (Table "Sous-Categorie1")
DVD - (Table "Fourniture")
Ecriture (Table "Categorie")
Bics (Table "Sous-Categorie1")
Atlantis (Table "Sous-Categorie2")
Bleu (Table "Fourniture")

etc etc...
Toutes ces tables sont liées en access.
Je suis peut être trop exigeant, et je me doute que le code derrière doit être costaud.

Je vous remercie de l'attention portée à la présente.

Yangoal25

12 réponses

perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006
19 janv. 2006 à 09:55
Hello.

Pourquoi ne met tu pas un arbre (treeview) ça serais plus simple à mon sens..

Là tu pourrais réellement faire comme l'explorateur windows... à voir ton exemple c'est le cas typique d'un arboréscence..



Il faudrais faire un peu d'objet un fait !!!

Tu as un Item racine (root, qui est invisible) est qui est le père de
tes Items "Informatique" est "Ecriture". ce dernier est à son tour le
père de "Bics", à son tour le pére de "Atlantis" ... en fait tu as
toute une filiation. La solution est de te créer un objet "Item" est de
faire de la récurrence. Une boite dans une boite identique, elle même
dans une boite identique ....



Dans l'idée c'est le principe de la prog orientée objet...



Bon courage.



@+
0
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006
19 janv. 2006 à 10:02
Re...



Mais sinon il est où ton pb !!!

Qu'est ce que tu ne sais pas faire ???

Faire le lien avec tes bdd ?

Mettre un ComboBox ??



Sois plus explicite please...



@+
0
yangoal25 Messages postés 51 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 juin 2008
19 janv. 2006 à 10:27
Le problème est que j'ai mon msflexgrid, et je dois introduire des combo-box avec lesquels je voudrais afficher l'arborescence de ma base de donnée comme j'explique plus haut.

L'objectif est que l'utilisateur puisse choisir dans le combo la "fourniture" désirée et qu'il mette la "quantité" dans la cellule de gauche (la taille du tableau est de 2 colonnes et 50 lignes)

Et donc, je pourrais intégrer une fonction "tree" dans mon combo pour avoir l'arborescence?

J'espère avoir été clair, en tout cas je te remercie de m'aider.

Yangoal25
0
yangoal25 Messages postés 51 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 juin 2008
19 janv. 2006 à 10:50
Pour être complet, je dessine ma msflexgrid, et je place des combos aux endroits prévu. (A part que mes je ne sais pas en mettre ou les lignes dépasse de ma feuille donc je ne pense pas que ma méthode soit bonne. Dois-je intégrer aux cellules du tableau? et si oui, comment faire)

J'ai fait le lien avec ma BD, mais bien sur je n'ai que la fourniture et non toute la hiérarchie. Quid du tree?

Mes problèmes commencent à bien se préciser.

Merci pour tout.

yangoal25
0

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

Posez votre question
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006
19 janv. 2006 à 11:07
Je pense avoir compris ce que tu désire faire, le pb est que je ne sais toujours pas où se situe ton pb ???



Pour mettre des combo dans ton MSFlexgrid il suffit de les positionner à l'endroit désiré sur ta form !!

ex : combo1.Height = MSFlexgrid1.CellHeight (etc...)

En réalité, tu ne peut pas incorporer un combo dans ton flex... tu peut
le mettre devant et laisser croire à l'utilisateur qu'il est bien a
l'intérieur !!!!



De la même manière, si tu veux que l'utilisateur mette la "quantité"
dans la cellule de gauche, il faut absoluement faire apparaitre une
textbox pour qu'il puisse remplir l'info parce que tu ne peut pas
écrire directement dans un flex...(je sais pas si tu as remarqué?) Il
faut que sur un événement "click" sur ton Flex tu récupère les infos
(height, width, top, left) de la cellule clickée par l'utilisateur est
que tu mette en lieu est place une texbox. Quand l'utilisateur à fini
de remplir l'info, il fait "entrée" (par exemple) et toi tu remplis la
cellule..



Non, un treview est un composant... au lieu de mettre une série de
combo moi j'aurias mis un arbre (sur la gauche de ta form par
exemple)... alors quand tu cliques sur une des branches, tu fais
apparaitre sur la droite de ta form, toutes t'es informations ...
m'enfin c'est p't'être pas une très bonne idée, je ne connais pas tout
les détails de ton projet..





je sais pas si je suis très clair ???
0
yangoal25 Messages postés 51 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 juin 2008
19 janv. 2006 à 11:21
Pour mettre des combo dans ton MSFlexgrid il suffit de les positionner à l'endroit désiré sur ta form !!
ex : combo1.Height = MSFlexgrid1.CellHeight (etc...)
En réalité, tu ne peut pas incorporer un combo dans ton flex... tu peut le mettre devant et laisser croire à l'utilisateur qu'il est bien a l'intérieur !!!!Pour mettre des combo dans ton MSFlexgrid il suffit de les positionner à l'endroit désiré sur ta form !!
ex : combo1.Height = MSFlexgrid1.CellHeight (etc...)
En réalité, tu ne peut pas incorporer un combo dans ton flex... tu peut le mettre devant et laisser croire à l'utilisateur qu'il est bien a l'intérieur !!!!

C'est ce que je pensais, je crois que de ce coté, ca fonctionne. Mais je ne peux pas mettre plus de combo que de ligne visible mais ce n'est pas un gros problème.

De la même manière, si tu veux que l'utilisateur mette la "quantité" dans la cellule de gauche, il faut absoluement faire apparaitre une textbox pour qu'il puisse remplir l'info parce que tu ne peut pas écrire directement dans un flex...(je sais pas si tu as remarqué?) Il faut que sur un événement "click" sur ton Flex tu récupère les infos (height, width, top, left) de la cellule clickée par l'utilisateur est que tu mette en lieu est place une texbox. Quand l'utilisateur à fini de remplir l'info, il fait "entrée" (par exemple) et toi tu remplis la cellule..

Je vois ce que tu veux dire. Je crois que je vais mettre simplement un text box sans contour, je ne crois pas que l'utilisateur fera la différence.

Non, un treview est un composant... au lieu de mettre une série de combo moi j'aurias mis un arbre (sur la gauche de ta form par exemple)... alors quand tu cliques sur une des branches, tu fais apparaitre sur la droite de ta form, toutes t'es informations ... m'enfin c'est p't'être pas une très bonne idée, je ne connais pas tout les détails de ton projet..

C'est une idée qui est pas mal du tout pour contourner le truc. Je met l'arborescence sur le coté, il sélectionne la "fourniture" et celle-ci va se coller dans la cellule (ou le text box) désirée. Je vais tenté ça. Je vais me renseigner sur les treeview.

Je te remercie. j'aurais peut être encore besoin de tes précieux conseiller par la suite, j'espère que ca ne te dérange pas.

Bonne journée
0
yangoal25 Messages postés 51 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 juin 2008
20 janv. 2006 à 09:03
Monsieur Perathoner,


Me revoila déjà.


J'ai trouvé sur un forum du code pour créer un treeview en relation avec une BD access.
J'ai essayé de l'adapter à mon programme mais il m'arrête déjà dès les première lignes. Je suis sur que c'est une bétise mais si tu savais y regarder, ce serait sympa de ta part.

Voici le code

Set adoConnection = New ADODB.Connection
Set adoRecordSet = New ADODB.RecordsetConnectionString "Provider Microsoft.Jet.OLEDB.3.51;" & " Data Source = C:\TFE\Stock2.mdb"
adoConnection.Open ConnectionString
adoRecordSet.Open "CATEGORIE", adoConnection


Do Until adoRecordSet.EOF
Dim SqlD, setClass, setClass2, setClass3, setClass4, setClass5 As Recordset


SqlD = "SELECT Id_Categorie,Int_Categorie FROM CATEGORIE ORDER BY Int_Categorie"
Set setClass = New Recordset (Il bloque déjà ici, il ne reconnait pas le "New")
setClass.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText



SqlD = "SELECT Id_Sous-Categorie1,Int_Sous-Categorie1 FROM SOUS-CATEGORIE ORDER BY Int_Sous-Categorie1"
Set setClass2 = New Recordset
setClass2.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText


SqlD = "SELECT Id_Sous-Categorie2,Int_Sous-Categorie2 FROM SOUS-CATEGORIE2 ORDER BY Int_Sous-Categorie2"
Set setClass3 = New Recordset
setClass3.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText


SqlD = "SELECT Id_Sous-Categorie3,Int_Sous-Categorie3 FROM SOUS-CATEGORIE3 ORDER BY Int_Sous-Categorie3"
Set setClass4 = New Recordset
setClass4.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText


SqlD = "SELECT Id_Fourniture,Denomination FROM FOURNITURE ORDER BY Denomination"
Set setClass5 = New Recordset
setClass5.Open SqlD, geststage, adOpenForwardOnly, adLockReadOnly, adCmdText


TreeView1.LineStyle = tvwRootLines
TreeView1.Nodes.Add , , "c", "Catégories", 1 ' Véritable père avec un seul noeud et sa clé est "c"
Dim idC, idC2, idC3, idC4 As String, nodX As Node
tvwDB.Nodes.Clear 'effacer tous les noeuds

While Not setClass.EOF
idC = setClass!id_Categorie
Set nodX = TreeView1.Nodes.Add("c", tvwChild, idC, setClass!Int_categorie)
setClass2.Filter = "Id_Categorie='" & setClass!id_Categorie & "'"


While Not setClass2.EOF
idC2 = setClass2!id_Sous - Categorie1
Set nodX = TreeView1.Nodes.Add(idC, tvwChild, idC2, setClass2!Int_Sous - Categorie1)
setClass3.Filter = "id_Sous-Categorie1='" & setClass2!id_Sous - Categorie1 & "'"


While Not setClass3.EOF
idC3 = setClass3!id_Sous - Categorie2
Set nodX = TreeView1.Nodes.Add(idC2, tvwChild, idC3, setClass3!Int_Sous - Categorie2)
setClass4.Filter = "id_Sous-Categorie2='" & setClass3!id_Sous - Categorie2 & "'"

While Not setClass4.EOF
idC4 = setClass4!id_Sous - Categorie3
Set nodX = TreeView1.Nodes.Add(idC3, tvwChild, idC4, setClass4!Int_Sous - Categorie3)
setClass5.Filter = "id_Sous-Categorie3='" & setClass4!id_Sous - Categorie3 & "'"

While Not setClass5.EOF
Set nodX = TreeView1.Nodes.Add(idC4, tvwChild, , setClass5!Denomination)
setClass5.MoveNext
Wend


setClass4.MoveNext
Wend


setClass3.MoveNext
Wend


setClass2.MoveNext
Wend

setuser.Filter = 0
setClass.MoveNext
Wend

setClass5.Close
Set setClas5 = Nothing
setClass4.Close
Set setClas4 = Nothing
setClass3.Close
Set setClas3 = Nothing
setClass2.Close
Set setClass2 = Nothing
setClass.Close
Set setClass = Nothing

' Assure que tous les noeuds soient visibles.
nodX.EnsureVisible


adoRecordSet.Close
adoConnection.Close


Set adoConnection = Nothing
Set adoRecordSet = Nothing

Je me doute qu'il n'est pas facile de retourner dans un code étranger.

Merci d'avance
0
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006
20 janv. 2006 à 10:04
Hello.

Ba désolé mais je ne connais pas les base ADO...



Moi je fais comme ça...



'######## CODE #######


Private Wks As Workspace 'Workspace


Public Base As Database 'Database

Private BaseOpen as Boolean 'Flag pour dire l'état de la bdd



'Ouverture de l'acces vers la Base De Données

Public Function BaseOpen(Chemin1 As String) As Boolean

' Création de l'espace de travail

Set Wks = DBEngine.Workspaces(0)

' Ouverture de la base de données

Set Base = Wks.OpenDatabase(Chemin1, False, 0, "")

If Base Is Nothing Then

MsgBox ("Base De Données inacessible")

BaseOpen = False

Else

BaseOpen = True

End If

End If

End Function




Public Sub LectureBase() as string

Dim RecordParameter As Recordset

Dim SQLParameter As String



SQLParameter = "SELECT * FROM LeNomDeTaTable WHERE NomDuChamp=" & IntituléQueTuRecherche

Set RecordParameter = Base.OpenRecordset(SQLParameter)

Do Until RecordParameter.EOF

[traitement]

RecordParameter.MoveNext

Loop



RecordParameter.Close

Set RecordParameter = Nothing

End Function

'###### FIN DU CODE ######



Bon courage...
0
yangoal25 Messages postés 51 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 juin 2008
20 janv. 2006 à 10:12
Je te remercie quand même.
Il n'est pas évident de trouver des explications simple pour des treeview avec une relations BD Access.
Je continue de chercher, merci encore.
0
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006
20 janv. 2006 à 10:36
un petit lien mais j'suis pas certain qu'il te sois d'une grande aide..

http://www.melbpc.org.au/pcupdate/2010/2010article4.htm



@+
0
yangoal25 Messages postés 51 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 juin 2008
20 janv. 2006 à 11:39
L'anglais, pas évident quand c'est technique.

Merci quand même de ton aide

Bonne journée.
0
cs_abasconet Messages postés 1 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 3 mars 2008
3 mars 2008 à 00:25


0
Rejoignez-nous