SQL Express: Datensatznach Refresh wiederfinden

SQL Express von Boris Borzic

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

SQL Express: Datensatznach Refresh wiederfinden

Beitrag 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
Gruß
Markus
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: SQL Express: Datensatznach Refresh wiederfinden

Beitrag von nightcrawler »

über

Code: Alles auswählen

SELECT @@identity
bekommst Du den zuletzt angelegten Identifier: http://technet.microsoft.com/de-de/libr ... 87342.aspx
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: SQL Express: Datensatznach Refresh wiederfinden

Beitrag 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
Gruß
Markus
Antworten