Hallo,
habe Probleme beim Löschen eines Datensatzes
Was mache ich:
Lade mir gejointe Daten aus 2 Tabellen in eine DataTable
Die Daten werden verändert bzw. Datensätze werden gelöscht.
Da man keine Updates auf gejointe Tabellen durchführen kann,
habe ich mir entsprechende Update- und DeleteCommands erstellt,
die ausschließlich nur auf eine Tabelle wirken sollen.
Das Updaten funktioniert fehlerfrei. Beim Löschen der Daten habe ich jedoch Schwierigkeiten
Es kommt die Fehlermeldung:
Dynamisches SQL-Generierung wird wegen mehrerer Basistabellen nicht unterstützt!
Die Fehlermeldung verstehe ich soweit. Aber warum geschieht dies?
Folgende Syntax verwende ich:
UpdateCommand:
Function fctCreateUpdateCommand(ByVal con As SqlConnection) As SqlCommand
Dim cmd As SqlCommand = New SqlCommand()
cmd.CommandText = "UPDATE tblZR " & _
"SET " & _
"DelFlag = @DelFlag, " & _
...
...
"ZRDatumBis = @ZRDatumBis, " & _
"Bemerkung = @Bemerkung, " & _
"Sperre = @Sperre " & _
"WHERE (ZRIdent = @ZRIdent)"
cmd.Connection = con
Dim col As SqlParameterCollection = cmd.Parameters
col.Add(New SqlParameter("@DelFlag", SqlDbType.Bit, 1, "DelFlag"))
...
...
col.Add(New SqlParameter("@ZRDatumBis", SqlDbType.Date, 3, "ZRDatumBis"))
col.Add(New SqlParameter("@Bemerkung", SqlDbType.VarChar, -1, _
"Bemerkung"))
col.Add(New SqlParameter("@Sperre", SqlDbType.Bit, 1, "Sperre"))
Dim param As SqlParameter = New SqlParameter( _
"@ZRIdent", SqlDbType.Int, 4, "ZRIdent")
col.Add(param)
param.SourceVersion = DataRowVersion.Original
Return cmd
End Function DeleteCommand:
Function fctCreateDeleteCommand(ByVal con As SqlConnection) As SqlCommand
Dim cmd As SqlCommand = New SqlCommand()
Try
cmd.CommandText = "DELETE FROM tblZR " & _
"WHERE (ZRIdent = @ZRIdent)"
cmd.Connection = con
Dim col As SqlParameterCollection = cmd.Parameters
Dim param As SqlParameter = New SqlParameter( _
"@ZRIdent", SqlDbType.Int, 4, "ZRIdent")
col.Add(param)
param.SourceVersion = DataRowVersion.Original
Return cmd
End Function Aufgerufen wird wie folgt:
...
...
DataAdapter.UpdateCommand = fctCreateUpdateCommand(con)
DataAdapter.DeleteCommand = fctCreateDeleteCommand(con)
...
... Verstehe einfach nicht, warum die oben genannte Fehlermeldung beim Löschen eines Datensatzes erscheint?
Vielen Dank
spatzimatzi |