Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Dbgrid Positionieren (https://www.delphipraxis.net/69685-dbgrid-positionieren.html)

Bernd 18. Mai 2006 16:22

Datenbank: Ms Sql / Mysql • Zugriff über: Sql

Dbgrid Positionieren
 
Hallo kann mir jemand aus der Patsche helfen.

ich habe auf einem Formular ein DBGrid aus einer kundendaten bank. bei doppelclick auf einen datensatz wird ein neues DatailFormular aufgemacht . Hier kann dann geändert werden. Um den aktuellen datensatz festzuhalten, merke ich mir ihn in einer Veriablen

Satznr:=FrmDMKunden.Qry_KundenLesen.RecNo;

wenn ich das Änderungs formular dann verlasse, muss ich die daten ja aus der Datenbank nachlesen und dann positioniere ich wieder auf diesen satz.

CsqlKundenlesen:='select * from Kunden order By Name1 Asc';
FrmKunden.Kundenlesen;
FrmDMKunden.Qry_KundenLesen.RecNo:=Satznr;
FrmKunden.DBGKunden.SelectedField:=DbeIdAdresse.Fi eld;
Close;

und es funtioniert.

Jetzt die Frage, wenn ich in dem Datailformular auch eine Neuanlage mache. Wie kann ich dann nach dem Nachlesen wieder auf den richtigen Satz ( den neuen ) positionieren ?

Besten dank für Eure Hilfe

BlueStarHH 18. Mai 2006 16:47

Re: Dbgrid Positionieren
 
Speicher den Wert aus dem Key-Feld von dem neuen Datensatz. Dann suchst Du dir im Hauptformular mit Tabelle.Locate(Key,...) den richtigen Datensatz. Wurde der gefunden springt Locate dorthin.

Bernd 18. Mai 2006 17:19

Re: Dbgrid Positionieren
 
das geht leider nicht da es sich um ein autoincrement handelt, welche ja erst nach dem speichern bekannt ist. Ausserdem, wenn ich mit locate geht nur bei tables oder ?? und die habe ich nicht !

BlueStarHH 18. Mai 2006 18:14

Re: Dbgrid Positionieren
 
Zitat:

Zitat von Bernd
das geht leider nicht da es sich um ein autoincrement handelt, welche ja erst nach dem speichern bekannt ist.

Den letzten autoincrement kannst Du mit SELECT LAST_INSERT_ID() abfragen.


Zitat:

Zitat von Bernd
Ausserdem, wenn ich mit locate geht nur bei tables oder ?? und die habe ich nicht !

Mit mySQL kenne ich mich nicht so gut aus, da sollte es aber auch eine Möglichkeit geben, einen bestimmten Datensatz anzupringen wenn man die Key hat. Und den hast Du mit der oben genannten Methode.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:14 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 by Thomas Breitkreuz