Peut-on afficher dans un dbgrid des champs provenant de=20
tables diff=E9rentes (mais dans une m=EAme base de donn=E9es) ?
Comment peut-on afficher dans ce m=EAme dbgrid des donn=E9es=20
correspondant uniquement =E0 une informatique s=E9lectionn=E9e=20
par un utilisateur via un combo box ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AP
Des contrainte d'enregistrement peuvent néamoins apparaitre
-----Message d'origine----- Bonjour,
Peut-on afficher dans un dbgrid des champs provenant de tables différentes (mais dans une même base de données) ?
* au niveau BD soit par une vue ou une procédure stocké * au niveau logiciel par l'utilisation d'un recordset.
Comment peut-on afficher dans ce même dbgrid des données correspondant uniquement à une informatique sélectionnée par un utilisateur via un combo box ?
création d'un requete sql via recorset.
Merci d'avance pour votre aide
lm
.
Des contrainte d'enregistrement peuvent néamoins apparaitre
-----Message d'origine-----
Bonjour,
Peut-on afficher dans un dbgrid des champs provenant de
tables différentes (mais dans une même base de données) ?
* au niveau BD soit par une vue ou une procédure stocké
* au niveau logiciel par l'utilisation d'un recordset.
Comment peut-on afficher dans ce même dbgrid des données
correspondant uniquement à une informatique sélectionnée
par un utilisateur via un combo box ?
Des contrainte d'enregistrement peuvent néamoins apparaitre
-----Message d'origine----- Bonjour,
Peut-on afficher dans un dbgrid des champs provenant de tables différentes (mais dans une même base de données) ?
* au niveau BD soit par une vue ou une procédure stocké * au niveau logiciel par l'utilisation d'un recordset.
Comment peut-on afficher dans ce même dbgrid des données correspondant uniquement à une informatique sélectionnée par un utilisateur via un combo box ?
création d'un requete sql via recorset.
Merci d'avance pour votre aide
lm
.
Zoury
Salut! :O)
Voici un exemple qui devrait t'aider à débuter..
'*** ' référence : Microsoft ActiveX Data Objects 2.X Library ' Utilise la base de données NorthWind d'SQL Server.. ' Form1 ' 1 ComboBox, Style = "2 - DropDownList" ' 1 DataGrid Option Explicit
Me.Caption = "Exemple de DataGrid ""Bindé""" Call FillList(Combo1)
End Sub
Private Sub Form_Resize() Call SetControlsPosition End Sub
Private Sub FillList(ByRef cbo As ComboBox)
Dim rs As ADODB.Recordset Set rs = GetRecordset("select CategoryID, CategoryName from categories")
Do Until rs.EOF Call cbo.AddItem(rs.Fields("CategoryName").Value) cbo.ItemData(cbo.NewIndex) = rs.Fields("CategoryID").Value Call rs.MoveNext Loop If (cbo.ListCount > 0) Then cbo.ListIndex = 0
End Sub
Private Function FillGrid(ByRef sCategoryID As String, ByRef dg As DataGrid) As Recordset
Set dg.DataSource = GetRecordset("select ProductName, QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder from products where categoryid = '" & sCategoryID & "'")
End Function
Private Function GetRecordset(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(CONNECTION_STRING)
Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient Call rs.Open(sQuery, cn, adOpenKeyset, adLockBatchOptimistic)
Private Sub Form_Unload(Cancel As Integer) If Not DataGrid1.DataSource Is Nothing Then Set DataGrid1.DataSource = Nothing End If End Sub '***
Change la chaine de connection afin de pointer vers la BD NorthWind fournit par microsoft. Si tu n'as pas SQL Server, tu peux te connecter sur la version Access de cette BD qui se trouve dans le répertoire ..Microsoft Visual StudioVB98nwind.mdb
Me.Caption = "Exemple de DataGrid ""Bindé"""
Call FillList(Combo1)
End Sub
Private Sub Form_Resize()
Call SetControlsPosition
End Sub
Private Sub FillList(ByRef cbo As ComboBox)
Dim rs As ADODB.Recordset
Set rs = GetRecordset("select CategoryID, CategoryName from categories")
Do Until rs.EOF
Call cbo.AddItem(rs.Fields("CategoryName").Value)
cbo.ItemData(cbo.NewIndex) = rs.Fields("CategoryID").Value
Call rs.MoveNext
Loop
If (cbo.ListCount > 0) Then cbo.ListIndex = 0
End Sub
Private Function FillGrid(ByRef sCategoryID As String, ByRef dg As DataGrid)
As Recordset
Set dg.DataSource = GetRecordset("select ProductName, QuantityPerUnit,
UnitPrice, UnitsInStock, UnitsOnOrder from products where categoryid = '" &
sCategoryID & "'")
End Function
Private Function GetRecordset(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(CONNECTION_STRING)
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
Call rs.Open(sQuery, cn, adOpenKeyset, adLockBatchOptimistic)
Private Sub Form_Unload(Cancel As Integer)
If Not DataGrid1.DataSource Is Nothing Then
Set DataGrid1.DataSource = Nothing
End If
End Sub
'***
Change la chaine de connection afin de pointer vers la BD NorthWind fournit
par microsoft. Si tu n'as pas SQL Server, tu peux te connecter sur la
version Access de cette BD qui se trouve dans le répertoire ..Microsoft
Visual StudioVB98nwind.mdb
Me.Caption = "Exemple de DataGrid ""Bindé""" Call FillList(Combo1)
End Sub
Private Sub Form_Resize() Call SetControlsPosition End Sub
Private Sub FillList(ByRef cbo As ComboBox)
Dim rs As ADODB.Recordset Set rs = GetRecordset("select CategoryID, CategoryName from categories")
Do Until rs.EOF Call cbo.AddItem(rs.Fields("CategoryName").Value) cbo.ItemData(cbo.NewIndex) = rs.Fields("CategoryID").Value Call rs.MoveNext Loop If (cbo.ListCount > 0) Then cbo.ListIndex = 0
End Sub
Private Function FillGrid(ByRef sCategoryID As String, ByRef dg As DataGrid) As Recordset
Set dg.DataSource = GetRecordset("select ProductName, QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder from products where categoryid = '" & sCategoryID & "'")
End Function
Private Function GetRecordset(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(CONNECTION_STRING)
Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient Call rs.Open(sQuery, cn, adOpenKeyset, adLockBatchOptimistic)
Private Sub Form_Unload(Cancel As Integer) If Not DataGrid1.DataSource Is Nothing Then Set DataGrid1.DataSource = Nothing End If End Sub '***
Change la chaine de connection afin de pointer vers la BD NorthWind fournit par microsoft. Si tu n'as pas SQL Server, tu peux te connecter sur la version Access de cette BD qui se trouve dans le répertoire ..Microsoft Visual StudioVB98nwind.mdb