vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
DeleteCommand für SQLDataAdapter 
Autor: spatzimatzi
Datum: 02.02.16 20:02

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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DeleteCommand für SQLDataAdapter1.279spatzimatzi02.02.16 20:02

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel