Hi, ich benutze die folgende Funktion um meine Veränderungen an den DataTable-Einträgen zu speichern. Public Shared Function UpdateDataBase(ByVal frm_Formular As _
Windows.Forms.Form, ByVal ds_DataSetObjekt As DataSet, ByVal _
str_Backendname As String)
'Die Funktion Aktualisiert die Daten in der datenbank mit den aktuellen
' Daten des Datasets.
'Fehlerabfangroutine zum Schutz der gesammten Funktion
Try
'Interne Datenbankanbindung
Dim con_DBconnection As New System.Data.OleDb.OleDbConnection()
Dim ds_tbl_currentTabelle As DataTable
'Fehlerabfangroutine greift ein, wenn der Eingabefokus nicht von
' der zu speichernden Tabelle genommen werden kann, oder wenn
'Die Verbindung zur Datenbank fehlschlägt, oder wenn das Update
' nicht durchgeführt werden kann.
Try
'Datenbank wird geöffnet. Rückgabewert von eQM_getDBConnection
' ist die offene Datenbank.
con_DBconnection = eQM_getDBConnection(ds_DataSetObjekt, _
str_Backendname)
'Die Schleife durchläuft alle Tabellen des Datasets.
For Each ds_tbl_currentTabelle In ds_DataSetObjekt.Tables
'Eingabe in der dem Formular zugrundeliegenden Tabelle
' beenden.
frm_Formular.BindingContext(ds_DataSetObjekt, _
ds_tbl_currentTabelle.TableName).EndCurrentEdit()
'Sql-String für den Datenadapter.
Dim str_Sql As String = "SELECT * FROM " & _
ds_tbl_currentTabelle.TableName
'Datenadapter wird konfiguriert, um die aktuelle Tabelle
' mit der Datenbank ab zu gleichen.
Dim ds_adp_OleDbDA As New _
System.Data.OleDb.OleDbDataAdapter(str_Sql, _
con_DBconnection)
'Der CommandBuilder ermöglicht die Abänderung in der
' Datenbank über Update, so dass nur veränderte Datensätze
' gespeichert werden.
Dim cb As New OleDb.OleDbCommandBuilder(ds_adp_OleDbDA)
ds_adp_OleDbDA.Update(ds_DataSetObjekt, _
ds_tbl_currentTabelle.TableName)
Next
Catch ex As Exception
MsgBox(ex.Message)
Finally
'Verbindung schließen, egal ob die Ausnahme ausgelöst wurde
' oder nicht.
con_DBconnection.Close()
End Try
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function Wenn ich jetzt aber eine komplette Zeile gelöscht habe, bekomme ich eine Fehlermeldung. : Dynamische SQL-Generierung wird gegen einen SelectCommand, der keine Basistabelleninformationen zurückgibt, nicht unterstützt.
Der Fehler tritt direkt in der Zeile vor dem Next auf. Irgendwo ja auch klar, denn ich habe einen Select - SQL - String, anstelle eines Delete Strings, denke ich.
Wie kann ich die Funktion anpassen, damit der Eintrag in der Datenbank gelöscht wird? Hab leider noch keine Erfahrung mit Delete.
Gru? Rub
(PS: Besuch doch mal meine Seiten http://e-liquids.de und http://jjpassion.de) |