![]() |
Mit Bookmarks arbeiten
Hallo,
ich möchte die Position des Datensatzzeigers vor dem 'posten' abspeichern, um nach dem Senden an die DB zu diesem Datensatz zurückzukehren:
Delphi-Quellcode:
Mein Problem ist, dass GetBookmark mir 'NIL' zurückliefert. Liegt das daran, dass sich der entsprechende Datensatz im 'insert' befindet?
procedure TDM_Database.PreparePost(Grid: TDBGrid);
var Bookmark: TBookmark; begin Bookmark:= Grid.DataSource.DataSet.GetBookmark; Grid.DataSource.DataSet.Post; if Grid.DataSource.DataSet.BookmarkValid(Bookmark) then Grid.DataSource.DataSet.GotoBookmark(Bookmark); end; Eine ID gibt es noch nicht, da 'insert'. So kann ich auch 'locate' nicht verwenden... Wie könnte ich das sonst lösen? |
Re: Mit Bookmarks arbeiten
Schon mal versucht, deine Procedure im Eregnis AfterPost einzusetzen? Der Datenbank-Cursor sollte dann eigentlich noch immer auf dem eingefügten Datensatz stehen.
Im Übrigen: Das DBGrid ist lediglich eine visuelle Darstellung deiner Query, Table oder was du als DataSet einsetzt. Du solltest deshalb besser direkt auf diese zugreifen - also als Übergabeparameter nicht dein DBGrid sondern dein DataSet verwenden. Grüße Mikhal |
Re: Mit Bookmarks arbeiten
Zitat:
und wieder die Frage aller Fragen: Welche Datenbank:?: |
Re: Mit Bookmarks arbeiten
Hallo,
Zitat:
Da kein gültiger Bookmark geliefert wird, wenn sich das Dataset im Insert befindet unterscheide ich zwei Fälle: 1. Bookmark ungültig: Den letzten Datensatz anzeigen 2. Bookmark gültig: Diesen zum aktuellen machen. So scheint es zu funktionieren! Zitat:
|
Re: Mit Bookmarks arbeiten
@sharky: mysql. Aber das ist hier nicht relevant...Oder?
|
Re: Mit Bookmarks arbeiten
Zitat:
Beim mysql kannst Du nämlich sehr leicht die ID des zuletzt eingefügeten Datensatzes ermitteln :stupid:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var last_id : Integer; begin with query1 do begin Close; Sql.Text := 'INSERT INTO ........'; ExecSQL; Close; Sql.Text := 'SELECT LAST_INSERT_ID()'; Open; last_id := Fields[0].AsInteger; Close; end; end; |
Re: Mit Bookmarks arbeiten
Hallo Sharky,
Zitat:
|
Re: Mit Bookmarks arbeiten
Zitat:
Zitat:
Oder verstehe ich dich jetzt ganz falsch? |
Re: Mit Bookmarks arbeiten
Hallo sharky,
es geht nicht nur um das Insertieren. Nachdem sich der Zustand der Datenmenge ändert, wie z.B. 'Post', möchte ich zu dem bearbeiteten Datensatz zurückkehren. Das gilt das auch für das Editieren. Da ich meine Behandlungsroutinen vor dem Bearbeiten aufrufen möchte gelingt mir das wie oben aufgezeigt. |
Re: Mit Bookmarks arbeiten
Hallo, gibt es den Last Insert Befehl auch für den normalen SQL Server 2000? thx
|
Re: Mit Bookmarks arbeiten
Hi,
nur eine Bemerkung am Rande: zu jedem GetBookmark gehört ein FreeBookMark, sonst hat man ein Memory - Leak. Frank |
Re: Mit Bookmarks arbeiten
@ZeroQool007: aud der SQL-Server Hilfe:
Zitat:
SQL-Code:
Grüße
INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125) SELECT @@IDENTITY AS 'Identity' Mikhal |
Re: Mit Bookmarks arbeiten
Zitat:
Probier mal
Code:
SELECT @@IDENTITY as NewID FROM [TABLENAME]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz