Seite 1 von 1

SQL Express: Datensatznach Refresh wiederfinden

Verfasst: Mo, 09. Dez 2013 9:35
von satmax
Ich lege einen neuen Datensatz an, in etwa so:

Code: Alles auswählen

 oDlg:oCursor:append()
myId:=oDlg:oCursor:FieldGet("_ID")  // Test: Ist hier 0
...
 oDlg:oCursor:UpdateRow()  // 
myId:=oDlg:oCursor:FieldGet("_ID")  // Test: Ist hier 23833 (Richtig == mein neuer Datensatz)
 oDlg:oCursor:Refresh()    
myId:=oDlg:oCursor:FieldGet("_ID")  // Test: Ist hier 2087 
Wie komme ich nach dem Refresh am schnellsten wieder zu meinem eben neu erstellten Datensatz?

Die KundenNummer wird durch einen Trigger vergeben. Um diese Kundennummer zu erhalten brauche ich das Refresh. Das Feld _ID ist eine Autoincrement Field, macht also den Datensatz eindeutig zuordenbar. Sortiert ist der Select Bereich nach der Kundennummer.

Gruß
Markus

Re: SQL Express: Datensatznach Refresh wiederfinden

Verfasst: Mo, 09. Dez 2013 10:17
von nightcrawler
über

Code: Alles auswählen

SELECT @@identity
bekommst Du den zuletzt angelegten Identifier: http://technet.microsoft.com/de-de/libr ... 87342.aspx

Re: SQL Express: Datensatznach Refresh wiederfinden

Verfasst: So, 15. Dez 2013 10:25
von satmax
nightcrawler hat geschrieben:über

Code: Alles auswählen

SELECT @@identity
bekommst Du den zuletzt angelegten Identifier: http://technet.microsoft.com/de-de/libr ... 87342.aspx
In der MC des SQL Servers komme ich damit klar und erhalte auch die richtige Rückgabe (1 Zeile ohne Feldname aber den richtigen _ID Wert, _ID == Autoinc Feld). Unter SQLExpress habe ich es mit

Code: Alles auswählen

...
oCur:append()     // Cursor mit Select x,y WHERE x BETWEEN 4711 AND 4712
IF ! oCur:UpdateRow()
   tdMsg("Problem beim Speichern. (1230)"  )
ELSE
	x:=oCur:LastIDSyntax		   
	oCursCopy:= SQLSelect():new(oCur:LastIDSyntax)
	x2:=oCursCopy:GetSQLColumn(1)   // returns a SQLColumn Object
	x3:=oCursCopy:RecordGet()				// returns nil
	x4:=oCursCopy:FCount()					// returns 1
	x5:=oCursCopy:fieldGet(1)				// returns nil
ENDIF
...
versucht. Habe aber keine Idee wo ich den Wert (_ID) auslesen kann. X3 und x5 =nil, X2 ist ein SQLColumn Object das aber keine relevanten Daten enthält.

x== "SELECT SCOPE_IDENTITY()"


Gruß
Markus