Aktuellen Datensatz ermitteln

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

Aktuellen Datensatz ermitteln

Beitragvon DL3AD » 14. Okt 2017, 13:12 Aktuellen Datensatz ermitteln

Hallo,

ich stehe auf dem schlauch :shock:
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
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon wp_xyz » 14. Okt 2017, 13:50 Re: Aktuellen Datensatz ermitteln

Alles das, was du per ZQuery.FieldByName(..) etc. abrufst, bezieht sich auf den aktuellen Datensatz.
wp_xyz
 
Beiträge: 2642
Registriert: 8. Apr 2011, 08:01

Beitragvon DL3AD » 14. Okt 2017, 14:06 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
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

Beitragvon gladio » 14. Okt 2017, 16:23 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: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon gladio » 14. Okt 2017, 16:36 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.
gladio
 
Beiträge: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon wp_xyz » 14. Okt 2017, 17:19 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.
wp_xyz
 
Beiträge: 2642
Registriert: 8. Apr 2011, 08:01

Beitragvon DL3AD » 15. Okt 2017, 10:25 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 8)
DL3AD
 
Beiträge: 368
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.8.0 FPC 3.0.4) und Debian Stretch (L 1.8.0 FPC 3.0.4) | 
CPU-Target: 32Bit/64Bit
Nach oben

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

cron
porpoises-institution
accuracy-worried