AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mit Bookmarks arbeiten
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Bookmarks arbeiten

Ein Thema von barnti · begonnen am 12. Jul 2004 · letzter Beitrag vom 25. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Mit Bookmarks arbeiten

  Alt 12. Jul 2004, 08:43
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:
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;
Mein Problem ist, dass GetBookmark mir 'NIL' zurückliefert. Liegt das daran, dass sich der entsprechende Datensatz im 'insert' befindet?
Eine ID gibt es noch nicht, da 'insert'. So kann ich auch 'locate' nicht verwenden...
Wie könnte ich das sonst lösen?
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Mit Bookmarks arbeiten

  Alt 12. Jul 2004, 08:57
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Mit Bookmarks arbeiten

  Alt 12. Jul 2004, 09:08
Zitat von barnti:
....Eine ID gibt es noch nicht, da 'insert'.....
Hai barnti,

und wieder die Frage aller Fragen: Welche Datenbank
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Mit Bookmarks arbeiten

  Alt 12. Jul 2004, 09:14
Hallo,

Zitat von mikhal:
Schon mal versucht, deine Procedure im Eregnis AfterPost einzusetzen? Der Datenbank-Cursor sollte dann eigentlich noch immer auf dem eingefügten Datensatz stehen.
nach dem Posten steht der Datensatzzeiger wieder auf dem ersten Datensatz. Daher muss das 'Bookmarken' vor dem Ändern des Datenmengenzustandes geschehen.
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 von mikhal:
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.
Der Code ist lediglich ein Ausschnitt der eigentlichen Behandungsroutine
Gruß,

Barnti
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Mit Bookmarks arbeiten

  Alt 12. Jul 2004, 09:16
@sharky: mysql. Aber das ist hier nicht relevant...Oder?
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Mit Bookmarks arbeiten

  Alt 12. Jul 2004, 09:24
Zitat von barnti:
@sharky: mysql. Aber das ist hier nicht relevant...Oder?
Doch, ist es
Beim mysql kannst Du nämlich sehr leicht die ID des zuletzt eingefügeten Datensatzes ermitteln
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Mit Bookmarks arbeiten

  Alt 12. Jul 2004, 09:26
Hallo Sharky,

Zitat von Sharky:
Zitat von barnti:
@sharky: mysql. Aber das ist hier nicht relevant...Oder?
Doch, ist es
Beim mysql kannst Du nämlich sehr leicht die ID des zuletzt eingefügeten Datensatzes ermitteln
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;
Das ist mir bekannt, bringt mich bei dem Probelem allerdings nicht weiter. Siehe oben...
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Mit Bookmarks arbeiten

  Alt 12. Jul 2004, 09:29
Zitat von barnti:
...Das ist mir bekannt, bringt mich bei dem Probelem allerdings nicht weiter. Siehe oben...
Verstehe ich jetzt nicht. Ich denke Du möchtest nach dem Insert zu dem neuen Datensatz springen. Und Du hast geschreiben:
Zitat:
...Eine ID gibt es noch nicht, da 'insert'. So kann ich auch 'locate' nicht verwenden...
Jetzt kennst Du doch die ID und kannst im AfterInsert Ereigniss zu dem neuen Datensatz springen.
Oder verstehe ich dich jetzt ganz falsch?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Mit Bookmarks arbeiten

  Alt 12. Jul 2004, 09:41
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.
Gruß,

Barnti
  Mit Zitat antworten Zitat
ZeroQool007

Registriert seit: 30. Aug 2004
127 Beiträge
 
#10

Re: Mit Bookmarks arbeiten

  Alt 25. Apr 2006, 09:12
Hallo, gibt es den Last Insert Befehl auch für den normalen SQL Server 2000? thx
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz