Hier ausnahmsweise ist ein Beispiel (mit Access, der Platzhalter für Parameter musst du für MySql ändern). Hier wird zuerst eine Liste von CompanyIds eingelesen (->erste ListBox). Bei der Auswahl werden dann Namen der Kontakte bei der ausgewählten Firma in die zweite ListBox eingelesen.
Option Strict On
Public Class Form1
Private conn As New OleDb.OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test\VertragsDB.MDB")
Private ds As New DataSet
Private initDone As Boolean
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
ReadCompanyIds()
initDone = True
End Sub
Private Sub ReadCompanyIds()
Dim da As New OleDb.OleDbDataAdapter("Select CompanyID, CompanyName" & _
"From Company Order By CompanyID", conn)
Try
da.Fill(ds, "CompanyIDs")
Catch ex As System.Exception
MsgBox("DB read failed: " + ex.ToString())
Return
End Try
Dim src As New BindingSource(ds, "CompanyIDs")
ListBox1.DataSource = src
ListBox1.DisplayMember = "CompanyName"
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
If Not initDone Then Return
ReadContacts(CInt(CType(ListBox1.SelectedItem, DataRowView)( _
"CompanyID")))
End Sub
Private Sub ReadContacts(ByVal companyId As Integer)
Dim da As New OleDb.OleDbDataAdapter("Select LastName+', '+FirstName As" & _
"ContactName From Contacts Where CompanyID=?", conn)
da.SelectCommand.Parameters.AddWithValue("CompanyID", companyId)
Try
If ds.Tables("Contacts") IsNot Nothing Then ds.Tables( _
"Contacts").Clear()
da.Fill(ds, "Contacts")
Catch ex As System.Exception
MsgBox("DB read failed: " + ex.ToString())
Return
End Try
Dim src As New BindingSource(ds, "Contacts")
ListBox2.DataSource = src
ListBox2.DisplayMember = "ContactName"
End Sub
End Class________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist |