2011-10-22 3 views
0

Je rencontre toujours des problèmes avec la zone de liste déroulante. J'ai la bonne requête. J'ai quatre tables dans MS Access. J'ai besoin de créer un formulaire dans Visual Basic qui a une zone de liste déroulante et un DataGrid. La sélection de la zone de liste déroulante affichera toutes les informations pertinentes sur cette personne sur la grille de données.Visual Basic 2010 Combo Box à datagrid

Par exemple, si je sélectionne John Doe (à partir de la zone de liste déroulante) la grille de données doit afficher:

customer_name (John Doe) order_date (01/01/01) article (Widget) prix (9,99)

Ma requête est:

`SELECT customers.customer_name, customers.customer_id, orders.order_date, 
orders.order_id, items.item_description, items.item_id, items.item_price 
FROM (customers, orders, items) 
LEFT JOIN order_items ON orders.order_id = order_items.order_id 
AND items.item_id = order_items.item_id 
HERE customers.customer_name = 'John Doe' 
`AND customers.customer_id = orders.order_id 
ORDER BY orders.order_id, items.item_id;` 

Comment puis-je ajouter John Doe à la zone de liste déroulante et un lien vers cette requête, quand après avoir été sélectionné, il affiche le résultat dans la grille de données?

Merci. Toute aide est appréciée.

Répondre

0

Essayez d'abord charger vos clients dans la zone de liste déroulante, créer l'événement qui se déclenche lorsque l'utilisateur de sélectionner une valeur, puis obtenir des données pour ce client et le lier à la datagridview

Private Sub LoadCustomers() 
     Dim cmd As New SqlCommand 
     cmd.CommandText = "SELECT customers.customer_name, customers.customer_id FROM customers " 
     cmd.Connection = yourConnectionObject 

     Dim myCombo As ComboBox 

     Dim ds As DataSet 
     Dim da As SqlDataAdapter 

     Try 
      da.SelectCommand = cmd 
      da.Fill(ds, "Customers") 

      ' this will load customers to combobox 
      With myCombo 
       .DataSource = ds.Tables(0).DefaultView 
       .DisplayMember = "customer_name" 
       .ValueMember = "customer_id" 
      End With 

     Catch ex As Exception 
     Finally 
     End Try 
    End Sub 

    ' create one event that fires when the user changes the selected value on the combobox 
    ' this is only a example, create your own method properly 
    Private Sub combobox_selectedvaluechanged() Handles combobox.SelectedValueChanged() 
     Dim CustomerId As Integer 
     Try 
      ' here you get the selected customer id 
      CustomerId = ComboBox.SelectedValue 

      ' Now you can retrieve data for this customer with your sql query 
      ' and for better results use the customer id to run the query 

      Dim ds As DataSet = GetDataForCustomer(CustomerId) ' as dataset 

      ' bind the returned dataset to the datagrid 
      yourdatagrid.Datasource = ds 

     Catch ex As Exception 

     End Try 
    End Sub