SQL Express: Datensatznach Refresh wiederfinden

SQL Express von Boris Borzic

Moderator: Moderatoren

SQL Express: Datensatznach Refresh wiederfinden

Beitragvon 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
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 776
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: SQL Express: Datensatznach Refresh wiederfinden

Beitragvon 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/library/ms187342.aspx
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 257
Registriert: Di, 24. Apr 2012 15:33
Wohnort: 72181 Starzach

Re: SQL Express: Datensatznach Refresh wiederfinden

Beitragvon 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/library/ms187342.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
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 776
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich


Zurück zu SQLExpress

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast