ID erhöhen - unbekannter Fehler

27/02/2008 - 19:45 von Thomas Hübner | Report spam
Hi NG,

für eine rudimentàre Ticketerfassung in einer MDB muß ich eine separate
ID erhöhen. Folgendes schlàgt mit OLEDBException "Unbekannter Fehler" fehl:

INSERT INTO T (TID) VALUES ((SELECT MAX(TID)+1 FROM T))

T= Tabelle
TID= Feld Double, ein Datensatz ist vorhanden Wert 1000

der komplette code:
Using cn As New
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB3.mdb;")
cn.Open()
Call (New OleDbCommand("INSERT INTO T (TID) VALUES ((SELECT
MAX(TID)+1 FROM T));", cn)).ExecuteNonQuery()
Dim ret As Double = (New OleDbCommand("SELECT @@IDENTITY;",
cn)).ExecuteScalar()
cn.Close()
End Using


Gruß,
Thomas
 

Lesen sie die antworten

#1 Elmar Boye
27/02/2008 - 20:15 | Warnen spam
Hallo Thomas,

Thomas Hübner schrieb:
für eine rudimentàre Ticketerfassung in einer MDB muß ich eine separate
ID erhöhen. Folgendes schlàgt mit OLEDBException "Unbekannter Fehler" fehl:

INSERT INTO T (TID) VALUES ((SELECT MAX(TID)+1 FROM T))



schon mal unter Access selbst probiert?!
Die VALUES Klausel erlaubt keine Unterabfragen, verwende anstatt dessen:
INSERT INTO T (TID)
SELECT MAX(TID)+1 FROM T

Beachte aber, dass so etwas nicht unbedingt mehrplatzfàhig ist.
Und der folgende Befehl

Dim ret As Double = (New OleDbCommand("SELECT @@IDENTITY;",
cn)).ExecuteScalar()



funktioniert damit nicht, denn das liefert den Wert der Autowert/Identity
Spalte, sofern für T definiert.

Ist TID wiederum der Autowert, wàre obiges SELECT sinnfrei, da reicht ein:
INSERT INTO T DEFAULT VALUES

Gruß
Elmar

Ähnliche fragen