Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Ungültiges Quell-Array bei Zuweisung string zu Query.FieldByName (https://www.delphipraxis.net/210510-ungueltiges-quell-array-bei-zuweisung-string-zu-query-fieldbyname.html)

haentschman 16. Jun 2022 10:19

AW: Ungültiges Quell-Array bei Zuweisung string zu Query.FieldByName
 
Moin...8-)

...das der Quelltext in Ordnung sei, ist nicht ganz richtig. Aber ihr konntet es nicht wissen...:wink:

Fällt Euch was auf?
Delphi-Quellcode:
procedure TDMED.FDQVorgangAssignmentNewRecord(DataSet: TDataSet);
begin
  DMED.FDQVorgangAssignment.FieldByName('idBelKopf').AsString := DMED.FDQAssignment.FieldByName('idBelKopf').AsString;
  DMED.FDQVorgang.FieldByName('ixUserVon').AsString := FPreferences.CurrentUser.UserNameShort;
  DMED.FDQVorgang.FieldByName('ErfasstAm').AsDateTime := Now();
  DMED.FDQVorgang.FieldByName('ixSPAdr').AsString := DMED.FDQAssignment.FieldByName('ixSPAdr').AsString;
end;
...so muß es sein:
Delphi-Quellcode:
procedure TDMED.FDQVorgangAssignmentNewRecord(DataSet: TDataSet);
begin
  DMED.FDQVorgangAssignment.FieldByName('idBelKopf').AsString := DMED.FDQAssignment.FieldByName('idBelKopf').AsString;
  DMED.FDQVorgangAssignment.FieldByName('ixUserVon').AsString := FPreferences.CurrentUser.UserNameShort;
  DMED.FDQVorgangAssignment.FieldByName('ErfasstAm').AsDateTime := Now();
  DMED.FDQVorgangAssignment.FieldByName('ixSPAdr').AsString := DMED.FDQAssignment.FieldByName('ixSPAdr').AsString;
end;
...vorher schreibe ich in eine andere Datenmenge. :shock:

Das ist mit der Trennung der Datenmenge passiert...:oops: :duck:

Danke für die Teilnahme...:thumb: Sollte nochwas sein, melde ich mich. :-D


ja, ja, ja... mit UnitTests wäre das nicht passiert. :zwinker:

BerndS 16. Jun 2022 10:26

AW: Ungültiges Quell-Array bei Zuweisung string zu Query.FieldByName
 
wäre es nicht so noch besser?
Delphi-Quellcode:
procedure TDMED.FDQVorgangAssignmentNewRecord(DataSet: TDataSet);
begin
  DataSet.FieldByName('idBelKopf').AsString := DMED.FDQAssignment.FieldByName('idBelKopf').AsString;
  DataSet.FieldByName('ixUserVon').AsString := FPreferences.CurrentUser.UserNameShort;
  DataSet.FieldByName('ErfasstAm').AsDateTime := Now();
  DataSet.FieldByName('ixSPAdr').AsString := DMED.FDQAssignment.FieldByName('ixSPAdr').AsString;
end;

himitsu 16. Jun 2022 10:50

AW: Ungültiges Quell-Array bei Zuweisung string zu Query.FieldByName
 
Jupp, einmal das falsche DataSet,
dann gibt es das "richtige" auch direkt als Parameter

und DMED ........... NIEMALS nicht aus einer Form/Objekt-Methode auf die globale Varaible zu dieser Form/Objekt zugreifen ... wenn man eine Variable braucht, dann nimmt man hier das Self.

Delphi-Quellcode:
procedure TDMED.FDQVorgangAssignmentNewRecord(DataSet: TDataSet);
begin
  DataSet.FieldByName('idBelKopf').AsString := FDQAssignment.FieldByName('idBelKopf').AsString;
  DataSet.FieldByName('ixUserVon').AsString := FPreferences.CurrentUser.UserNameShort;
  DataSet.FieldByName('ErfasstAm').AsDateTime := Now;
  DataSet.FieldByName('ixSPAdr').AsString := FDQAssignment.FieldByName('ixSPAdr').AsString;
end;


Beim "ErfasstAm" könnte man sich eventuell noch streiten, ob es dann ist, wo man anfing, mit Einfügen, oder dann wenn man fertig war,
also ob das nicht besser erst im OnBeforePost aufgehoben ist, anstatt im OnAfterInsert ... bzw. in einem Trigger in der DB (und das "ixUserVon" auch, falls es z.B. dem LoginName für DBConnection entspricht)

haentschman 16. Jun 2022 13:02

AW: Ungültiges Quell-Array bei Zuweisung string zu Query.FieldByName
 
:oops:
Ich oute mich mal...
Bei der Umstellung war das noch der alte Code. Da ist nur das DataSet gewechselt worden. Vorgang->VorgangAssignment. In dieser Stuation habe ich nicht darüber nachgedacht.

Das habe ich gleich mal überall geändert. :oops:
Delphi-Quellcode:
procedure TDMED.FDQVorgangAssignmentNewRecord(DataSet: TDataSet);
begin
  DataSet.FieldByName('idBelKopf').AsString := FDQAssignment.FieldByName('idBelKopf').AsString;
  DataSet.FieldByName('ixUserVon').AsString := FPreferences.CurrentUser.UserNameShort;
  DataSet.FieldByName('ErfasstAm').AsDateTime := Now;
  DataSet.FieldByName('ixSPAdr').AsString := FDQAssignment.FieldByName('ixSPAdr').AsString;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.
Seite 3 von 3     123   

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-2025 by Thomas Breitkreuz