vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 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

ADO.NET / Datenbanken
Update Access DB über OleDBCommand 
Autor: S_N
Datum: 28.11.10 17:41

Hallo,

ich versuche eine Tabelle über ein OleDBCommand Objekt zu updaten.
Das ganze klappt eigentlich auch ganz prima bis darauf das ich versucht habe einem Feld = NULL zuzuweisen.

Hier meine Function
    Public Function UpdateVenDS(ByVal lVenID As Long, ByVal sVenNr As String, _
      ByVal dVenDat As Date, ByVal lVenLZ As Long, _
                                ByVal dAnaKl As Date, ByVal dAnaGr As Date, _
                                ByVal lAnaKlLZ As Long, ByVal lAnaGrLZ As Long, _
                                ByVal bSetVenDat As Boolean, ByVal bSetKlDat As _
                                Boolean, ByVal bSetGrDat As Boolean) As Integer
 
        Dim cn As OleDb.OleDbConnection
        Dim sSql As String
        Dim cmd As New OleDb.OleDbCommand
 
        Dim lErgebnis As Integer
 
 
        cn = BuildConnection()
 
 
        cmd.Connection = cn
        cmd.CommandTimeout = 2
 
        cmd.Parameters.Add("@VenNr", OleDbType.VarChar)
        cmd.Parameters.Add("@VenDat", OleDbType.DBDate)
        cmd.Parameters.Add("@VenLZ", OleDbType.Integer)
        cmd.Parameters.Add("@KlDat", OleDbType.DBDate)
        cmd.Parameters.Add("@GrDat", OleDbType.DBDate)
        cmd.Parameters.Add("@LzKlein", OleDbType.Integer)
        cmd.Parameters.Add("@LzGross", OleDbType.Integer)
 
 
        cmd.Parameters("@VenNr").Value = sVenNr
        cmd.Parameters("@VenDat").Value = dVenDat
        cmd.Parameters("@VenLZ").Value = lVenLZ
        cmd.Parameters("@KlDat").Value = dAnaKl
        cmd.Parameters("@GrDat").Value = dAnaGr
        cmd.Parameters("@LzKlein").Value = lAnaKlLZ
        cmd.Parameters("@LzGross").Value = lAnaGrLZ
 
 
        sSql = "UPDATE ven SET " & _
               "ven_nr=@VenNr, ven_datum=@VenDat, laufzeit=@VenLz, " & _
               "ana_klein=@KlDat, ana_gross=@GrDat, laufzeit_klein=@LzKlein," & _
               "laufzeit_gross=@LzGross " & _
               "WHERE id=" & lVenID
 
 
        'Wenn ein Datum nicht gesetzt werden soll im SQL String den Text 
        ' abändern
        If Not bSetVenDat Then sSql = sSql.Replace("=@VenDat", "=NULL")
        If Not bSetKlDat Then sSql = sSql.Replace("=@KlDat", "=NULL")
        If Not bSetGrDat Then sSql = sSql.Replace("=@GrDat", "=NULL")
 
        'Das funktioniert aber ...
        'sSql = "update ven set ven_datum=NULL WHERE id=21"
        'Das funktioniert auch noch ...
        'sSql = "update ven set ven_nr=@VenNr, ven_datum=NULL WHERE id=21"
        'Das klappt nichtmehr ???
        'sSql = "update ven set ven_nr=@VenNr, ven_datum=NULL, laufzeit=@VenLz" & _
          "WHERE id=21"
 
        cmd.CommandText = sSql
        Try
            lErgebnis = cmd.ExecuteNonQuery
        Catch ex As Exception
            lErgebnis = -1
        End Try
 
 
        Return lErgebnis
 
    End Function
Ich ersetze einfach den Parameter (z.B. =@VenDat) einfach durch =NULL. Sobald ich dies aber ausführe kommt eine Exception (Datentypen in Kriterienausdruck unverträglich.)
Nach einigen Versuchen weis ich das das ganze Funktioniert sobald im CommandText hinter dem =NULL kein Parameter mehr kommt (s. auskommentierte Bereich über cmd.commandtext = ssql)

Kann mir jemdand einen Tip geben wie ich das Problem lösen kann da ich unter Umständen noch einige andere Werte auf NULL setzen muss kann ich dieses eine Feld nicht einfach hintendran packen?

Ich hatte vorher versucht dem Parameter einfach DBNull zuzuordnen, das ging aber nicht, daher mein Versuch einfach den Commandtext zu ändern.


mfg
Sebastian
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Update Access DB über OleDBCommand2.858S_N28.11.10 17:41
Re: Update Access DB über OleDBCommand1.175JangoF28.11.10 17:59
Re: Update Access DB über OleDBCommand1.225S_N28.11.10 18:17

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