OVH Cloud OVH Cloud

Question toute bête ! :-7

6 réponses
Avatar
PePiCK
Bonjour la liste !

Bon, j'explique !

2 ComboBox (cbo1 et cbo2)
cbo1 contient la liste d'une table Group
cbo2 contient la liste d'une table SubGroup

Résultat souhaité, si je choisi un group dans cbo1, je veux que cbo2
contienne que les SubGroup associé.

La logique est simple !
En Access, et ca doit faire trop longtemps que je fais que ca, c'est très
simple
Dans le cbo1, je mettais 2 colonnes, le GroupID et la description, on cache
la première colonne.
On actualise le cbo2 est mettant comme paramêtre le GroupID du cbo1.
Bingo le tour est joué !

En VB, on ne peux pas mettre 2 colonnes, donc, si je veux voir la
description, je dois me passer du GroupID
Mais la sa fou en l'air la facilité pour mettre le contenu du cbo2.

Quel est la façon la plus simple pour parvenir a mes fin ?

J'ai quelques idées, mais me semble lourde un peu !

Merci d'avance pour vos conseils !

PePiCK

6 réponses

Avatar
PePiCK
Certainement, mais je vois pas en quoi cela peux m'aider !?!?!?
La propriété tag appartient au ComboBox et non aux items !
Ou bien je ne voie pas du tout ou tu veux en venir !

PePiCK

"Bismark Prods" a écrit dans le message de news:
#
les combobox n'ont-ils pas de propriété Tag ?


Avatar
François Picalausa
Bonjour/soir,

Il est possible d'enregistrer une valeur numérique pour chaque item par
itemdata
Sinon, dans une combo standard VB (pas celle des common controls), Tag vaut
pour tout le contrôle.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Bismark Prods" a écrit dans le message de
news:%
Je ne l'utilise jamais mais j'ai souvenir que pour chaque item tu peux
enregistré une valeur texte y relative grace justement à cette propriété !
Je me trompe ?

"PePiCK" a écrit dans le message de
news:
> Certainement, mais je vois pas en quoi cela peux m'aider !?!?!?
> La propriété tag appartient au ComboBox et non aux items !
> Ou bien je ne voie pas du tout ou tu veux en venir !
>
> "Bismark Prods" a écrit dans le message de news:
> #
> > les combobox n'ont-ils pas de propriété Tag ?


Avatar
Bismark Prods
Je ne l'utilise jamais mais j'ai souvenir que pour chaque item tu peux
enregistré une valeur texte y relative grace justement à cette propriété !
Je me trompe ?

"PePiCK" a écrit dans le message de
news:
Certainement, mais je vois pas en quoi cela peux m'aider !?!?!?
La propriété tag appartient au ComboBox et non aux items !
Ou bien je ne voie pas du tout ou tu veux en venir !

PePiCK

"Bismark Prods" a écrit dans le message de news:
#
> les combobox n'ont-ils pas de propriété Tag ?





Avatar
Zoury
Salut Pepick! :O)

Regarde cette exemple et dis nous si ça convient :

La bd NWIND.mdb est fournit avec VS et se trouve dans ..Micrsoft Visual
StudioVB98
'***
' Form1
' 2 ComboBoxes, Style = 2 - DropDownList
Option Explicit

Private Const CONN_STRING As String = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesMicrosoft
Visual StudioVB98NWIND.MDB;Persist Security Infoúlse"
Private Const QUERY_STRING As String = _
"select [Products].[ProductName], [Suppliers].[SupplierID],
[Suppliers].[CompanyName] from [Products] inner join [Suppliers] on
[Products].[SupplierID] = [Suppliers].[SupplierID]"
Private Const CB_FINDSTRINGEXACT = &H158
Private Const CB_SETCURSEL = &H14E

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any _
) As Long

Private m_rs As ADODB.Recordset

Private Sub Combo1_Click()
Call FillCombo(Combo2, m_rs, "ProductName", ,
Combo1.ItemData(Combo1.ListIndex), True)
End Sub

Private Sub Form_Load()
Set m_rs = GetRecordset(CONN_STRING, QUERY_STRING)
Call FillCombo(Combo1, m_rs, "CompanyName", "SupplierID", "", True)
Call FillCombo(Combo2, m_rs, "ProductName", ,
Combo1.ItemData(Combo1.ListIndex), True)
End Sub

Private Sub SetControls()

Call Me.Move(Me.Left, Me.Top, 4215, 1305)
Me.Caption = "ComboBoxes Parent/Enfant"

Call Combo2.Move(120, 480, 3855, 315)
Call Combo1.Move(120, 120, 3855, 315)

End Sub

Private Function GetRecordset _
( _
ByRef sConnectionString As String, _
ByRef sQuery As String _
) As ADODB.Recordset

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection
Call cn.Open(sConnectionString)

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
Call rs.Open(sQuery, cn, adOpenForwardOnly, adLockReadOnly)

Set GetRecordset = rs

End Function

Private Sub FillCombo _
( _
ByRef cbo As ComboBox, _
ByRef rs As ADODB.Recordset, _
ByRef sField As String, _
Optional sItemDataField As String, _
Optional sFilter As String, _
Optional bDistinct As Boolean _
)

If cbo.ListCount > 0 Then Call cbo.Clear
If LenB(sFilter) > 0 Then rs.Filter = "SupplierID = " & sFilter

If rs.RecordCount > 0 Then
Call rs.MoveFirst
Do Until rs.EOF
If bDistinct Then
If SendMessage(cbo.hWnd, CB_FINDSTRINGEXACT, -1, ByVal
CStr(rs(sField).Value)) = -1 Then
Call cbo.AddItem(rs(sField).Value)
If LenB(sItemDataField) > 0 Then cbo.ItemData(cbo.NewIndex)
= rs(sItemDataField).Value
End If
Else
Call cbo.AddItem(rs(sField).Value)
If LenB(sItemDataField) > 0 Then cbo.ItemData(cbo.NewIndex) rs(sItemDataField).Value
End If
Call rs.MoveNext
Loop
Call SendMessage(cbo.hWnd, CB_SETCURSEL, 0, ByVal 0&)
End If

End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"PePiCK" wrote in message
news:%
: Bonjour la liste !
:
: Bon, j'explique !
:
: 2 ComboBox (cbo1 et cbo2)
: cbo1 contient la liste d'une table Group
: cbo2 contient la liste d'une table SubGroup
:
: Résultat souhaité, si je choisi un group dans cbo1, je veux que cbo2
: contienne que les SubGroup associé.
:
: La logique est simple !
: En Access, et ca doit faire trop longtemps que je fais que ca, c'est très
: simple
: Dans le cbo1, je mettais 2 colonnes, le GroupID et la description, on cache
: la première colonne.
: On actualise le cbo2 est mettant comme paramêtre le GroupID du cbo1.
: Bingo le tour est joué !
:
: En VB, on ne peux pas mettre 2 colonnes, donc, si je veux voir la
: description, je dois me passer du GroupID
: Mais la sa fou en l'air la facilité pour mettre le contenu du cbo2.
:
: Quel est la façon la plus simple pour parvenir a mes fin ?
:
: J'ai quelques idées, mais me semble lourde un peu !
:
: Merci d'avance pour vos conseils !
:
: PePiCK
:
:
Avatar
PePiCK
Désolé pour le temps de réponse !

Merci, ca marche très bien !
Pas vilain comme exemple ! :)

PePiCK

"Zoury" a écrit dans le message de news:
#
Salut Pepick! :O)

Regarde cette exemple et dis nous si ça convient :


Avatar
jhon
salut les gars.

si vous aller chercher le composant DBcombo ( Microsoft
Data Bound controls ) ( et il y en a d'autre ), vous
tomberez en cherchant un peu sur la propriete BoundColumn,
vous presserez alors la touche F1, et vous decouvrirez la
magie des composants DB.


-----Message d'origine-----
Bonjour la liste !

Bon, j'explique !

2 ComboBox (cbo1 et cbo2)
cbo1 contient la liste d'une table Group
cbo2 contient la liste d'une table SubGroup

Résultat souhaité, si je choisi un group dans cbo1, je


veux que cbo2
contienne que les SubGroup associé.

La logique est simple !
En Access, et ca doit faire trop longtemps que je fais


que ca, c'est très
simple
Dans le cbo1, je mettais 2 colonnes, le GroupID et la


description, on cache
la première colonne.
On actualise le cbo2 est mettant comme paramêtre le


GroupID du cbo1.
Bingo le tour est joué !

En VB, on ne peux pas mettre 2 colonnes, donc, si je veux


voir la
description, je dois me passer du GroupID
Mais la sa fou en l'air la facilité pour mettre le


contenu du cbo2.

Quel est la façon la plus simple pour parvenir a mes fin ?

J'ai quelques idées, mais me semble lourde un peu !

Merci d'avance pour vos conseils !

PePiCK


.