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-2025
 
zurück

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

ADO.NET / Datenbanken
Re: IDENTITY_INSERT Problem 
Autor: ModeratorDaveS (Moderator)
Datum: 12.04.05 14:31

Erstens, wenn du Daten mit .Fill() liest und wieder (als new) schreiben willst brauchst
du dataadapter.AcceptChangesDuringFill = False,
sonst hast du keine "Änderungen" in der DataTable, die du mit .Update() schreiben
kannst.

Zweitens generiert CommandBuilder keinen Parameter und keine Spalte für Update/Insert für eine AutoIdentity
Spalte, das wird nicht klappen. Mit solchem Code klappt's aber:
 
        ' Ist nur ein Test, "Row hinzufügen"
        Dim ndr As DataRow = _dt.NewRow
 
        For Each col As DataColumn In _dt.Columns
            ndr(col.ColumnName) = _dt.Rows(0)(col.ColumnName)
        Next
        ndr("OrderID") = 11080 ' Ist max plus 3 oder so...
        _dt.Rows.Add(ndr)
 
        Try
            Dim dt As DataTable = _dt.GetChanges()
            _sqlConn.Open()
 
            Dim cmd As New SqlCommand("SET IDENTITY_INSERT Orders ON", _sqlConn)
 
            Dim isql = "INSERT INTO Orders( OrderID, CustomerID , EmployeeID ," & _
              "OrderDate , RequiredDate , ShippedDate , ShipVia , Freight ," & _
              "ShipName , ShipAddress , ShipCity , ShipRegion , ShipPostalCode" & _
              ", ShipCountry ) VALUES ( @p0, @p1 , @p2 , @p3 , @p4 , @p5 , @p6" & _
              ", @p7 , @p8 , @p9 , @p10 , @p11 , @p12 , @p13 )"
 
            Dim icmd As New SqlCommand(isql, _sqlConn)
            icmd.Parameters.Add("@p0", SqlDbType.Int, 4, "OrderID")
            icmd.Parameters.Add("@p1", SqlDbType.NChar, 0, "CustomerID")
            icmd.Parameters.Add("@p2", SqlDbType.Int, 0, "EmployeeID")
            icmd.Parameters.Add("@p3", SqlDbType.DateTime, 0, "OrderDate")
            icmd.Parameters.Add("@p4", SqlDbType.DateTime, 0, "RequiredDate")
            icmd.Parameters.Add("@p5", SqlDbType.DateTime, 0, "ShippedDate")
            icmd.Parameters.Add("@p6", SqlDbType.Int, 0, "ShipVia")
            icmd.Parameters.Add("@p7", SqlDbType.Money, 0, "Freight")
            icmd.Parameters.Add("@p8", SqlDbType.NVarChar, 0, "ShipName")
            icmd.Parameters.Add("@p9", SqlDbType.NVarChar, 0, "ShipAddress")
            icmd.Parameters.Add("@p10", SqlDbType.NVarChar, 0, "ShipCity")
            icmd.Parameters.Add("@p11", SqlDbType.NVarChar, 0, "ShipRegion")
            icmd.Parameters.Add("@p12", SqlDbType.NVarChar, 0, "ShipPostalCode")
            icmd.Parameters.Add("@p13", SqlDbType.NVarChar, 0, "ShipCountry")
 
            _sqlDa.InsertCommand = icmd ' Nur INSERT notwendig hier
 
            Dim res As Integer = cmd.ExecuteNonQuery()
            res = _sqlDa.Update(dt)
            cmd = New SqlCommand("SET IDENTITY_INSERT Orders OFF", _sqlConn)
            res = cmd.ExecuteNonQuery()
        Catch ex As Exception
            Debug.WriteLine(ex.ToString())
        Finally
            _sqlConn.Close()
        End Try
SET IDENTITY_INSERT OFF ist eigentlich überflüssig, weil das nur gültig bleibt bis connection.Close().

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
IDENTITY_INSERT Problem2.942sliwalker12.04.05 09:17
Re: IDENTITY_INSERT Problem2.167ModeratorDaveS12.04.05 11:16
Re: IDENTITY_INSERT Problem2.293sliwalker12.04.05 12:27
Re: IDENTITY_INSERT Problem21.953sliwalker12.04.05 12:38
Re: IDENTITY_INSERT Problem2.368ModeratorDaveS12.04.05 14:31
Re: IDENTITY_INSERT Problem1.937sliwalker12.04.05 14:47
Re: IDENTITY_INSERT Problem1.862ModeratorDaveS12.04.05 14:57
Re: IDENTITY_INSERT Problem1.900sliwalker12.04.05 15:10
IDENTITY_INSERT Problem T11.999sliwalker13.04.05 12:37
Re: IDENTITY_INSERT Problem T11.804lpinter13.04.05 12:57
Re: IDENTITY_INSERT Problem T11.872ModeratorDaveS13.04.05 12:58
Re: IDENTITY_INSERT Problem T11.872sliwalker13.04.05 13:10
Re: IDENTITY_INSERT Problem T11.887ModeratorDaveS13.04.05 13:24
Re: IDENTITY_INSERT Problem T11.995sliwalker13.04.05 13:51
Re: IDENTITY_INSERT Problem T11.955ModeratorDaveS13.04.05 14:30
IDENTITY_INSERT Problem: LÖSUNG2.348sliwalker14.04.05 16:19
Re: IDENTITY_INSERT Problem: LÖSUNG1.858ModeratorDaveS14.04.05 18:15
Re: IDENTITY_INSERT Problem: LÖSUNG1.923ModeratorDaveS14.04.05 19:14
Re: IDENTITY_INSERT Problem: LÖSUNG1.939sliwalker15.04.05 09:25

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-2025 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