Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

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: 779
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Kontaktdaten:

SQL Express: Datensatznach Refresh wiederfinden

Beitrag von satmax » Mo, 09. Dez 2013 9:35

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
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 272
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72181 Starzach
Kontaktdaten:

Re: SQL Express: Datensatznach Refresh wiederfinden

Beitrag von nightcrawler » Mo, 09. Dez 2013 10:17

ü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: 779
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Kontaktdaten:

Re: SQL Express: Datensatznach Refresh wiederfinden

Beitrag von satmax » So, 15. Dez 2013 10:25

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