Frage von Visualbasi97, 22

VB.net Listbox mit Access Datenbank verbinden?

Wie kann ich über eine Listbox eine zeile einer Access Datenbank auslesen lassen z. B. wenn ich in der Listbox "1" eingebe, dass mir die zeile mit der Bezeichnung 1 angezeigt wird.

Antwort
von MarkusGenervt, 18

Ich kenne das zwar bisher nur von VB6, aber das dürfte sich bei VB.NET nicht geändert haben.

Zunächst einmal benötigst Du eine Verbindung zu der Datenbank. Die kannst Du mit dem DataControl-Steuerelement herstellen. Hier gibst Du in DataBase die Datenbank an und in Recordset die Tabelle/Abfrage.

Durch die Datensätze blätterst Du dann zur Laufzeit mit dem DataControl-Steuerelement.

Für die Anzeige der Datenfelder gibt es in den allgemeinen Steuerelementen eine Eigenschaft DataSource, wo Du das Steuerelement einträgst, welches die Verbindung zu der Datenbank herstellt (hier DataControl). In DataField wird jetzt das Datenfeld ausgewählt, welches das Steuerelement wiedergeben soll.

Das Ganze kannst Du natürlich auch per Code definieren, aber dann musst Du natürlich auch alle Auswahl- und Initialisierungs-Befehle manuell mit angeben, was dann sehr umständlich ist, wenn die Tabellen/Abfragen zur Laufzeit nicht geändert werden sollen.

Antwort
von jetzertle, 13

Mit einer Listview ist das schöner zu Gestalten, da du dann mehrere Spalten der Datenbankspalte (ID) anzeigen lassen kannst.

Du benötigst hierzu eine Textbox für die ID die du dir anzeigen lassen möchtest. Einen Button um dem Programm zu sagen es soll jetzt die Datenbank auslesen. Die Listview mit der Ansicht auf Detail und den Spaltennamen "Bezeichnung1" Jetzt noch den Code.

Imports System.Data.OleDb
Public Class Form1
Dim myConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\DeineDatenbank.accdb"
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myConnection As New OleDbConnection(myConnString)
ListView1.Items.Clear()

myConnection.Open()

Dim myCommand As New OleDbCommand("SELECT * FROM DeineDatenbankTabelle WHERE (ID = ?)", myConnection)
myCommand.Parameters.AddWithValue("ID", TextBox1.Text)

Dim myReader As OleDbDataReader = myCommand.ExecuteReader()
While myReader.Read

Dim newListViewItem As New ListViewItem
newListViewItem.Text = myReader.GetString(1)

ListView1.Items.Add(newListViewItem)
End While

myConnection.Close()
End Sub
End Class

Ich verstehe aber nicht warum du dir nur eine Feld anzeigen lassen möchtest. Hierzu könntest du auch einen Label oder eine Textbox nehmen.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten