Hallo zusammen,
Arbeite mich gerade in Datenbankprogrammierung ein. Stehe noch ganz am Anfang, glaubte aber den Code unten zu verstehen. Er funktioniert auch super bis man das Programm neu startet. Dann sind nämlich alle Änderungen, die ich in die Access-Datenbank übernommen geglaubt hatte (durch Klicken des zweiten Buttons) einfach nicht mehr vorhanden und die Datenbank präsentiert sich (durch klicken des ersten Buttons) im DataGridView so, als wäre sie nie durch das Programm angefasst worden.
Programmoberfläche: ein DataGridView, zwei Buttons...
Funktionalität:
- Beim Klicken des ersten Buttons wird das DataGridView mit Daten aus der bekannten Nordwind.mdb (Access-Datenbank) gefüllt.
- Nun können im DataGridView Zeilen gelöscht, hinzugefügt oder geändert werden.
- Beim Klicken des zweiten Buttons werden die Änderungen im DataGridView zurück in die Datenbank Nordwind.mdb geschrieben.
Code:
Kann mir jmd sagen, wieso Änderungen beim Neustart des Programms verloren gehen. Wenn ich Button1 nach vorgenommenen und gespeicherten Änderungen klicken, ohne das Programm neu zu starten, scheint er korrekt die geänderte Datenbank zu laden...
Danke für jede Hilfe!!!
icekuhn
Arbeite mich gerade in Datenbankprogrammierung ein. Stehe noch ganz am Anfang, glaubte aber den Code unten zu verstehen. Er funktioniert auch super bis man das Programm neu startet. Dann sind nämlich alle Änderungen, die ich in die Access-Datenbank übernommen geglaubt hatte (durch Klicken des zweiten Buttons) einfach nicht mehr vorhanden und die Datenbank präsentiert sich (durch klicken des ersten Buttons) im DataGridView so, als wäre sie nie durch das Programm angefasst worden.
Programmoberfläche: ein DataGridView, zwei Buttons...
Funktionalität:
- Beim Klicken des ersten Buttons wird das DataGridView mit Daten aus der bekannten Nordwind.mdb (Access-Datenbank) gefüllt.
- Nun können im DataGridView Zeilen gelöscht, hinzugefügt oder geändert werden.
- Beim Klicken des zweiten Buttons werden die Änderungen im DataGridView zurück in die Datenbank Nordwind.mdb geschrieben.
Code:
Quellcode
- Imports System.Data.OleDb
- Public Class Form1
- Private conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Nordwind.mdb")
- Private da As OleDbDataAdapter = Nothing
- Private ds As DataSet = Nothing
- ''' Liefert gefülltes DataSet au der Datenbank
- Public Function getArtikel() As DataSet
- Dim selStr As String = "SELECT ArtikelNr, Artikelname, Einzelpreis, Mindestbestand FROM Artikel ORDER BY Artikelname"
- da = New OleDbDataAdapter(selStr, conn)
- 'Neu hinzugefügte Datensätze erhalten sofort einen Primärschlüssel
- da.MissingSchemaAction = MissingSchemaAction.AddWithKey
- conn.Open()
- Dim ds As New DataSet()
- da.Fill(ds, "Artikel")
- conn.Close()
- Return ds
- End Function
- ''' Zurückschreiben der im DataSet vorgenommenen Änderungen in die Datenbank
- Public Sub setArtikel(ByRef ds As DataSet)
- Dim cb As New OleDbCommandBuilder(da)
- 'Anwenden
- conn.Open()
- da.Update(ds, "Artikel")
- conn.Close()
- End Sub
- '' Anzeigen
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- DataGridView1.DataSource = Nothing
- ds = getArtikel()
- DataGridView1.DataSource = ds
- DataGridView1.DataMember = "Artikel"
- 'Aufruf der Routine zum Formatieren des DataGridViews
- formatDataGridView(DataGridView1)
- End Sub
- ''' Aktualisieren
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- Dim ds1 As DataSet = ds.GetChanges()
- If ds1 IsNot Nothing Then
- Try
- setArtikel(ds1)
- ds.Merge(ds1)
- ds.AcceptChanges()
- MessageBox.Show("Datenbank wurde aktualisiert!", "Erfolg")
- Catch ex As Exception
- ds.RejectChanges()
- MessageBox.Show(ex.Message, "Fehler")
- End Try
- End If
- End Sub
- Private Sub formatDataGridView(dgv As DataGridView)
- dgv.Columns.Remove("Einzelpreis")
- Dim tbc As New DataGridViewTextBoxColumn()
- tbc.DataPropertyName = "Einzelpreis"
- tbc.HeaderText = "Einzelpreis"
- tbc.Width = 80
- tbc.DefaultCellStyle.Format = "c"
- tbc.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
- tbc.DefaultCellStyle.Font = New Font(DataGridView1.Font, FontStyle.Bold)
- tbc.DisplayIndex = 2
- dgv.Columns.Add(tbc)
- End Sub
- End Class
Kann mir jmd sagen, wieso Änderungen beim Neustart des Programms verloren gehen. Wenn ich Button1 nach vorgenommenen und gespeicherten Änderungen klicken, ohne das Programm neu zu starten, scheint er korrekt die geänderte Datenbank zu laden...
Danke für jede Hilfe!!!
icekuhn
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „icekuhn“ ()