Combo dans DBGrid

cs_Bastos Messages postés 5 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 15 janvier 2003 - 15 janv. 2003 à 21:10
cs_PrX Messages postés 91 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 2 novembre 2005 - 16 janv. 2003 à 12:45
Salut, je cherche à mettre dans une DBGrid une combobox contenant les enregistrements d'une table access. Comment dois-je faire ???

2 réponses

cs_PrX Messages postés 91 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 2 novembre 2005
16 janv. 2003 à 12:18
Salut,

Fonce pas droit dans la cible sans la voir...
Comme tu le constatera à plusieurs reprises, les outils de base de VB ne sont pas ce que l'on croit.

Une DBGrid n'a pas les propriétés d'une grille ACCESS.

En gros, tu ne peux pas.
Invente toi un stratagème...

Recherche des idées sur le site...

A plus,

PrX
, :-p Initiate To VB6 And Completely Crazy

PS :
Comme je vois que tu t'amuse avec des BdD ACCESS, je te donnes un tuyau.
Tu dois toujours UPDATEr pour valider tes modifs.
0
cs_PrX Messages postés 91 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 2 novembre 2005
16 janv. 2003 à 12:45
Resalut,

Je t'ai peut être mal compris...

Alors excuse-moi
Et voici une réponse,

Si tu veux afficher dans une DBGrid les données de ta base ACCESS en passant par un choix sur un ComboBox, la méthode est celle-ci :

dim cnx as new adodb.connection
dim rec as new adodb.recordset
dim SQLcmd as string

Private Sub Form_Load()

cnx.connectionstring = "database.mdb"
cnx.provider = "Microsoft.Jet.OLEDB.4.0"
cnx.open

'Pour trier et afficher dans la DBGrid
rec.CursorLocation = adUseClient

'Ici "champ" est le champ de ta table sur le quel tu vas effectuer ta sélection du combobox

SQLcmd = "SELECT * FROM table"
rec.open SQLcmd, cnx, adOpenDynamic, adLockOptimistic
rec.sort = "champ"

' rec devient la table source de données de ta DBGrid
Set DBGrid1.DataSource = rec

'Mise en place du ComboBox "Cbo"
if rec.EOF = False Then rec.MoveFirst Else rec.Close : Exit Sub
i=0
Do While Not rec.EOFIf i 0 Then Cbo.Additem rc("champ"), i: i i+1
'On évite les doublets
If i<>0 And rec("champ") <> Cbo.List(i-1) Then
Cbo.AddItem rec("Champ"), i
i = i+1
End If
Loop

'Affichage de départ
Cbo.ListIndex = 0

End Sub

Sur ton ComboBox,

Private Sub Cbo_Click()rec.Filter "champ " & Cbo.Text
End Sub

Voilà pour ton affichage.

A plus,

PrX
, :-p Initiate To VB6 And Completely Crazy
0
Rejoignez-nous