ZUSAMMENFASSUNF DES DATAGRIDVIEW MIT DATENBANKZUGRIFF
In den beiden vorhergegangenen Anleitung wurde detailliert erklärt, wie man ein DataGridView mit Daten aus der Datenbank befüllt oder auch verändert.
In der folgenden Grafik ist der Aufbau dargestellt:
Der komplette Programmcode:
Imports MySql.Data.MySqlClient Public Class frmMain Dim conn As New MySqlConnection ' Verbindungsvariable zum Datenbankserver/Datenbank Dim daten As New DataSet() ' Container(Zwischenspeicher) für die Datensätze Dim id As String Public Sub dbOeffnen() conn.ConnectionString = "Data Source=10.194.x.xxx;UID=BENUTZER-DB;Initial Catalog=DB-NAME;password=DB-Passwort" Try conn.Open() ' Öffnen der Datenbank auf dem DB-Server Catch ex As Exception MsgBox("Error: " & ex.Message) End Try End Sub Public Sub datenAbfragen() Dim sql As String sql = "SELECT tbl.formPrim as 'V-ID',Upper(tbl.formPriority) AS 'PRIO',DATE_FORMAT(tbl.formDate,'%d.%m.%Y um %H:%m Uhr') AS 'Gemeldet am'," sql += "tbl.formRaum as 'Standort',tbl.formMessage as 'BESCHREIBUNG',if (tbl.formErledigt='0000-00-00 0000:00','OFFEN',tbl.formErledigt) AS Status, " sql += "concat(tbl.formVorname,' ',tbl.formNachname) AS Name FROM tblmonitor AS tbl " sql += "WHERE tbl.visible = '1' ORDER BY tbl.formPriority asc;" Dim adapter As MySqlDataAdapter = New MySqlDataAdapter(sql, conn) ' hier wird die SQl-Anweisung an die Datenbank gesendet Try daten.Clear() ' Datentabelle wieder neu aufbauen adapter.Fill(daten, "tblmonitor") Catch ex As Exception End Try ' das Ergebnis der Abfrage wird an das Dataset übergeben dbgrid.DataSource = daten ' Inhalt des Datasets an das dbGrid übergeben dbgrid.DataMember = "tblmonitor" dbgrid.Font = New Font("Arial", 13, FontStyle.Regular) dbgrid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells dbgrid.Columns(0).Width = 50 dbgrid.Columns(1).Width = 100 dbgrid.Columns(2).Width = 240 dbgrid.Columns(3).Width = 125 dbgrid.Columns(4).Width = 400 dbgrid.Columns(5).Width = 200 dbgrid.Columns(6).Width = 300 End Sub Private Sub frmMain_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed conn.Close() End Sub Private Sub btnAbbrechen_Click(sender As Object, e As EventArgs) Handles btnAbbrechen.Click Close() End Sub Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load btnSpeichern.Enabled = False dbOeffnen() datenAbfragen() End Sub Private Sub StörungBearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles StörungBearbeitenToolStripMenuItem.Click id = dbgrid.Item(0, dbgrid.CurrentCell.RowIndex).Value btnSpeichern.Enabled = True End Sub Private Sub btnSpeichern_Click(sender As Object, e As EventArgs) Handles btnSpeichern.Click Dim sql As String Dim cmd As MySqlCommand If MsgBox("Diese Störung jetzt als beseitigt markieren?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then # 'prüfen ob eine Abschlussmeldung eintragen wurde - wenn nicht, dann abbruch.. If Len(txtaMeldung.Text) = 0 Then MsgBox("Bitte eine kurze Info zur Beseitigung eingeben") txtaMeldung.Focus() Exit Sub End If sql = "update tblmonitor set visible = 0,abschlussmeldung = '" & txtaMeldung.Text & "' where formPrim = " & id Try cmd = New MySqlCommand(sql, conn) cmd.BeginExecuteNonQuery() 'Initiiert die asynchrone Ausführung der Transact-SQL-Anweisung txtaMeldung.Clear() datenAbfragen() btnSpeichern.Enabled = False Catch ex As Exception MsgBox("Änderung des Status nicht möglich") End Try End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Manuelle Aktualisierung datenAbfragen() End Sub End Class