Forums Neueste Beiträge
 

Keine ID mehr...

27/01/2009 - 04:23 von Jens Biermann | Report spam
Guten Morgen,

ich sitze jetzt seit Stunden daran eine Lösung für ein Problem zu
finden. Weder das Internet noch die MSDN gibt was zum Thema her.

Es kann natürlich sein das ich hier falsch bin, also bitte mich nicht
gleich vierteilen.

Das Problem das ich habe beginnt mit einer alten Access Datenbank. Diese
wurde noch mit ADODB angesprochen. Is ja auch egal warum. Wurde eine
neue Zeile der Tabelle hinzugefügt und mit Update abgeschlossen war ein
Zugriff auf das "AutoZahl"-Feld ID direkt möglich. Hier zum Anschauen
z.B. :

RS.AddNew()
RS("Name") = "Test"
...
RS.Update()
Dim ID As Integer = RS("ID")

Folgendes Beispiel lieferte direkt den ID Wert, dieser wie beschrieben
von Access automatisch gesetzt wird.

Jetzt habe ich die gloreiche Aufgabe, das Projekt für den SQL Compact
Server ( oder àhnlich ) um zu stricken. Soweit so gut, die alten Klassen
angepasst, lassen sich jetzt Daten aus der SDF Datei lesen und auch neue
Eintràge erstellen. Nur besagter Fall liefert immer den Wert "0". Bei
einigem Experementieren gab es sogar DBNull...

Folgender Code wird zum aktualiseren der Tabelle verwendet:

Sub Update()
Dim SQLC As New Data.SqlServerCe.SqlCeCommandBuilder(mDataAdapter)
mDataAdapter.UpdateCommand = SQLC.GetUpdateCommand
mDataAdapter.DeleteCommand = SQLC.GetDeleteCommand
mDataAdapter.InsertCommand = SQLC.GetInsertCommand
mDataAdapter.Update(mDataSet)
End Sub

Spàter wird das Element mit :

Default Property Item(ByVal ColumnName As String) As Object
Get
Return mDataSet.Tables(0).Rows(mIndex).Item(ColumnName)
End Get
...

wieder abgerufen. Ich verwende auch folgende beiden Optionen :

SQLA.MissingSchemaAction = MissingSchemaAction.AddWithKey
SQLA.MissingMappingAction = MissingMappingAction.Passthrough

Nur nebenbei mit SQLExpress ist das kein Problem, und Access natürlich.

Um einen guten Tipp, wàhre ich sehr dankbar. Vielleicht hab ich auch nur
was übersehen.

mfg
Jens
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
27/01/2009 - 08:22 | Warnen spam
Hallo Jens,

"Jens Biermann" schrieb:

Jetzt habe ich die gloreiche Aufgabe, das Projekt für den SQL Compact Server ( oder àhnlich ) um zu stricken. Soweit so gut, die
alten Klassen angepasst, lassen sich jetzt Daten aus der SDF Datei lesen und auch neue Eintràge erstellen. Nur besagter Fall
liefert immer den Wert "0". Bei einigem Experementieren gab es sogar DBNull...



Lies die erzeugte ID nach dem INSERT über die gleiche Connection so aus:

SELECT SCOPE_IDENTITY()

Also bspw:

<Variable> = CType( <SqlCommand>.ExecuteScalar( "SELECT SCOPE_IDENTITY()" ), Int64 )

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen