ZEOS Insert, Update und Delete

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Benutzeravatar
juelin
Beiträge: 296
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: ZEOS Insert, Update und Delete

Beitrag von juelin »

Ja Soner,
das war es.
Ich hatte TZConnection.TransactIsolaltionLevel auf None stehen.
Jetzt klappt es auch ohne ZConnection Discommet/Commit.
Danke, danke, danke.
Alles Gute bis dem Nächst.
Gruß
Jürgen

paweld
Beiträge: 91
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: ZEOS Insert, Update und Delete

Beitrag von paweld »

Soner hat geschrieben: 7.2.4.-stable.
Leider will diese Version nicht auf Lazarus 3.4 mit FPC 3.2.2 kompilieren. Aber ich habe die Version 7.2.14-stable überprüft und sie liefert die Anzahl der geänderten Datensätze ohne Probleme.
Grüße / Pozdrawiam
paweld

Rhyt
Beiträge: 74
Registriert: Mo 28. Nov 2022, 20:22

Re: ZEOS Insert, Update und Delete

Beitrag von Rhyt »

Der letzte Beitrag ist schon bisschen älter aber, ich wollte das dennoch noch hinzufügen da ich das so nicht gelesen habe hier.

Also wenn ich z.b. etwas Speichern möchte, mache ich das wie folgt, wenn z.b. mehrere Tabellen beteiligt sind.
Ich sag der Transaction das jetzt was passiert, dann kommt ein Try except block und dann wird der status abgefragt der Querys usw. und was gemacht werden soll. Und falls etwas schief geht dann bekommt man ne Meldung über den Fehler.
eventuell hilft das. Eventuell funktioniert das auch mit Joins, hab ich noch nicht probiert.

Code: Alles auswählen

procedure TFramePersonDetail.BtnSave1Click(Sender: TObject);
begin
  DataModule1.ZTransaction1.StartTransaction;

  try
    if DataModule1.ZQPerson.State in [dsEdit, dsInsert] then
      DataModule1.ZQPerson.Post;

    if DataModule1.ZQVertrag.State in [dsEdit, dsInsert] then
      DataModule1.ZQVertrag.Post;

    DataModule1.ZTransaction1.Commit;  // Transaktion erfolgreich abschließen
  except
    on E: Exception do
    begin
      DataModule1.ZTransaction1.Rollback;  // Bei einem Fehler Transaktion zurückrollen
    //  ShowMessage('Fehler beim Speichern: ' + E.Message);
    end;
  end;
end;               

Antworten