Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: Schreiben in die Datenbank macht Endlosschleife

  Alt 19. Sep 2024, 06:54
Moin...

Zitat:
Gleiche OS Version auf allen Rechnern? Evtl. 32/64 Problematik?
W11, 64Bit überall gleich
Zitat:
Tritt das Problem bei einem speziellen Datensatz oder bei allen Datensätzen auf?
...nur ein Datensatz. Alle anderen lassen sich problemlos speichern. In der Zwischenzeit (3 Monate) hatte dieser Arbeitsplatz 3 verschiedene Datensätze die betroffen waren.
PS: In diesem "Modul" werden an diesem Platz ca. 100 Änderungen an verschieden Datensätzen gemacht. Nur dieser eine will nicht.
Zitat:
// korrekt
Distributor: 18.09.2024 14:24:15 - START FOnChangeGridBegin
Distributor: 18.09.2024 14:24:15 - END FOnChangeGridBegin
Distributor: 18.09.2024 14:24:15 - START Database.Write - 9025
Distributor: 18.09.2024 14:24:15 - END Database.Write - 9025
Distributor: 18.09.2024 14:24:15 - START Assign
Distributor: 18.09.2024 14:24:15 - END Assign
Distributor: 18.09.2024 14:24:15 - START FOnChangeGridEnd
Distributor: 18.09.2024 14:24:15 - END FOnChangeGridEnd
------
// Fehler
Distributor: 18.09.2024 14:24:50 - START FOnChangeGridBegin
Distributor: 18.09.2024 14:24:50 - END FOnChangeGridBegin
Distributor: 18.09.2024 14:24:50 - START Database.Write - 7242
Delphi-Quellcode:
procedure TFormDistributorLogic.SaveDistributor;

  function CanSaveHistorie: Boolean;
  begin
    Result := not ((FModifiedDistributor.StateInternType = FOriginalDistributor.StateInternType) and
                   (FModifiedDistributor.ResponsibleTo = FOriginalDistributor.ResponsibleTo) and
                   (FModifiedDistributor.DocumentChoice = FOriginalDistributor.DocumentChoice));
  end;

begin
  if Assigned(FOnChangeGridBegin) then
  begin
    FOnChangeGridBegin(Self);
  end;

  DMZU.Database.Write(FModifiedDistributor, CanSaveHistorie); // Historie siehe DB Trigger
  FDistributorDatasource.Changed := True;
  FModifiedDistributor.IsChanged := False; // setzt auf normal

  FOriginalDistributor.Assign(FModifiedDistributor);

  if Assigned(FOnChangeGridEnd) then
  begin
    FOnChangeGridEnd(Self);
  end;
end;
  Mit Zitat antworten Zitat