Hallo Zusammen,
ich möchte Zugriff auf eine Datenbank über ein Modul realisieren, da die Anwendung später schnell zu erweitern sein soll.
Ich habe es so versucht:
Module DB_neu
Private myOleDbDataAdapter As New OleDbDataAdapter
Private preload_ds As New DataSet
Private Con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & My.Settings.Dateipfad & "")
Public Function Tabelle_laden(ByVal table As String)
Try
preload_ds.Tables.Remove(table)
Catch ex As Exception
Exit Try
End Try
'Verbinden
Con.Open()
' SelectCommand erstellen welches die "Select-Abfrage" gegen die
' Datenbank beinhaltet
Dim myOleDbSelectCommand As New OleDb.OleDbCommand
myOleDbSelectCommand.Connection = Con
myOleDbSelectCommand.CommandText = "SELECT * FROM " & table.ToString
' DataAdapter mit dem SelectCommand verbinden
myOleDbDataAdapter.SelectCommand = myOleDbSelectCommand
' und mit dem DataAdapter das DataSet füllen
myOleDbDataAdapter.Fill(preload_ds, table.ToString)
'Verdingung schließen
Con.Close()
Return True
End Function
Public Function Daten_an_DGV(ByVal return_dgv As DataGridView, ByVal table As String)
return_dgv.DataSource = preload_ds
return_dgv.DataMember = table.ToString
Return True
End Function
ublic Function SpeichereDSChanges(ByVal table As String)
Try
Con.Open()
Dim myOleDbDA As New OleDb.OleDbDataAdapter("SELECT * FROM " & table.ToString, Con)
Dim commandBuilder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(myOleDbDA)
myOleDbDA.Update(preload_ds, table.ToString)
Catch ex As Exception
Con.Close()
Return False
End Try
Con.Close()
Return True
End Function
End Module
Diese drei Funktionen werden benutzt um Tabellen ins Dataset zu laden, Tabellen aus dem Dataset an ein DGV zu binden und um eine geänderte Tabelle wieder in die Datenbank zu speichern.
Leider funktioniert mir das Speichern der Daten einfach nicht, obwohl diese ins Dataset übernommen werden.
Vielleicht sieht ja jemand den Fehler, habe schon etliche Sachen versucht, aber es funktioniert nichts, Fehler wird auch keiner ausgegeben.
ich möchte Zugriff auf eine Datenbank über ein Modul realisieren, da die Anwendung später schnell zu erweitern sein soll.
Ich habe es so versucht:
Module DB_neu
Private myOleDbDataAdapter As New OleDbDataAdapter
Private preload_ds As New DataSet
Private Con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & My.Settings.Dateipfad & "")
Public Function Tabelle_laden(ByVal table As String)
Try
preload_ds.Tables.Remove(table)
Catch ex As Exception
Exit Try
End Try
'Verbinden
Con.Open()
' SelectCommand erstellen welches die "Select-Abfrage" gegen die
' Datenbank beinhaltet
Dim myOleDbSelectCommand As New OleDb.OleDbCommand
myOleDbSelectCommand.Connection = Con
myOleDbSelectCommand.CommandText = "SELECT * FROM " & table.ToString
' DataAdapter mit dem SelectCommand verbinden
myOleDbDataAdapter.SelectCommand = myOleDbSelectCommand
' und mit dem DataAdapter das DataSet füllen
myOleDbDataAdapter.Fill(preload_ds, table.ToString)
'Verdingung schließen
Con.Close()
Return True
End Function
Public Function Daten_an_DGV(ByVal return_dgv As DataGridView, ByVal table As String)
return_dgv.DataSource = preload_ds
return_dgv.DataMember = table.ToString
Return True
End Function
ublic Function SpeichereDSChanges(ByVal table As String)
Try
Con.Open()
Dim myOleDbDA As New OleDb.OleDbDataAdapter("SELECT * FROM " & table.ToString, Con)
Dim commandBuilder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(myOleDbDA)
myOleDbDA.Update(preload_ds, table.ToString)
Catch ex As Exception
Con.Close()
Return False
End Try
Con.Close()
Return True
End Function
End Module
Diese drei Funktionen werden benutzt um Tabellen ins Dataset zu laden, Tabellen aus dem Dataset an ein DGV zu binden und um eine geänderte Tabelle wieder in die Datenbank zu speichern.
Leider funktioniert mir das Speichern der Daten einfach nicht, obwohl diese ins Dataset übernommen werden.
Vielleicht sieht ja jemand den Fehler, habe schon etliche Sachen versucht, aber es funktioniert nichts, Fehler wird auch keiner ausgegeben.