Hallo,
ich stehe auf dem schlauch
Mit einer ZQuery kann ich mit .First den ersten Datensatz greifen, mit .Last den letzten - aber wie kann ich den aktuellen Datensatz ermitteln ?
Gruß Frank
Aktuellen Datensatz ermitteln
Re: Aktuellen Datensatz ermitteln
Alles das, was du per ZQuery.FieldByName(..) etc. abrufst, bezieht sich auf den aktuellen Datensatz.
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Aktuellen Datensatz ermitteln
... ja dass ist klar.
In einem DBGrid habe ich eine Datensatz ausgewählt - der ist nun der aktuelle.
Nun ändere ich in einer Eingabemaske die Daten. vor dem schreiben in die DB prüfe ich mit einer DB Abfrage ob die Daten dann doppelt sein würden.
Bei der Abfrage verliere ich dann den aktuellen Datensatz den ich zuvor zum Editieren gewählt hatte.
Wie kann ich mir den zuvor ausgewählten Datensatz merken um ihn dann wieder anzusteuern ?
Gruß Frank
In einem DBGrid habe ich eine Datensatz ausgewählt - der ist nun der aktuelle.
Nun ändere ich in einer Eingabemaske die Daten. vor dem schreiben in die DB prüfe ich mit einer DB Abfrage ob die Daten dann doppelt sein würden.
Bei der Abfrage verliere ich dann den aktuellen Datensatz den ich zuvor zum Editieren gewählt hatte.
Wie kann ich mir den zuvor ausgewählten Datensatz merken um ihn dann wieder anzusteuern ?
Gruß Frank
- gladio
- Beiträge: 217
- Registriert: Sa 21. Jun 2014, 06:15
- OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Aktuellen Datensatz ermitteln
meinst du vielleicht sowas
Code: Alles auswählen
procedure ....;
var PrevRecord: TBookmark;
begin
PrevRecord:=ZQueryX.GetBookmark;
try
mach irgendwas
finally
if PrevRecord <> nil then
begin
ZQueryX.GotoBookmark(PrevRecord);
ZQueryX.FreeBookmark(PrevRecord);
end;
end;
end;
- gladio
- Beiträge: 217
- Registriert: Sa 21. Jun 2014, 06:15
- OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Aktuellen Datensatz ermitteln
Du kannst auch einfach den Primärkey des aktuelle Datensatzes in eine Variable schreiben,
irgndwas machen und den Datensatz danach mit Locate und der Variablen wieder aufrufen.
irgndwas machen und den Datensatz danach mit Locate und der Variablen wieder aufrufen.
Re: Aktuellen Datensatz ermitteln
DL3AD hat geschrieben:... ja dass ist klar.
In einem DBGrid habe ich eine Datensatz ausgewählt - der ist nun der aktuelle.
Nun ändere ich in einer Eingabemaske die Daten. vor dem schreiben in die DB prüfe ich mit einer DB Abfrage ob die Daten dann doppelt sein würden.
Bei der Abfrage verliere ich dann den aktuellen Datensatz den ich zuvor zum Editieren gewählt hatte.
Dann nimm halt für die Prüfung nicht dieselbe Query. Evtl gibt es bei ZEOS auch ein Dataset.Clone, durch das man sich einen zweiten unabhängigen Cursor erzeugen kann. Oder erzeuge dir eine zweite ZQuery mit demselben SQL-Text (oder besser: nur mit den Feldern, die du prüfen willst), führst diese im OnBeforePost der Query aus, die editiert wird, und falls die Suchquery den geänderten Datensatz schon findest, brichst du das Speichern mit Abort ab.
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Aktuellen Datensatz ermitteln
... Ich Danke euch beiden.
Die Idee mit einer zweiten Query hatte ich auch - habe es nun auch so gemacht - damit ist alles sauber getrennt und es funktioniert
Die Idee mit einer zweiten Query hatte ich auch - habe es nun auch so gemacht - damit ist alles sauber getrennt und es funktioniert