Geht FieldRef ohne RecordRef?

15. August 2016 10:22

Hallo,

ich möchte einen Abgleich verschidener Felder in unterschiedlichen Tabellen durchführen und am Ende wissen: wurden Änderungen durchgeführt oder nicht.
Die Änderung kann jeweils in beide Richtungen durchgeführt werden (ich nenn' das mal "hin" oder "zurück").
Ich habe aus vier Tabellen je einen Record geladen und vergleiche jetzt diverse Felddaten. Wenn sie unterschiedlich sind, soll eines der beiden Felder mit dem Wert des anderen gesetzt werden.
So ähnlich:
Code:
if TabelleA.Feld88 <> TabelleB.Feld399 then
begin
  if TransferHin then
    TabelleA.Feld88 := TabelleB.Feld399
  else
    TabelleB.Feld399 := TabelleA.Feld88;
end;


Das wollte ich so umsetzen

Code:
TabelleA.Get(KeyValue);
TabelleB.Get(KeyValue);
TabelleC.Get(KeyValue);
Direction := UserSelectedDirectionFromDialog;
DidUpdate := UpdateField(TabelleA.Feld1, TabelleB.Feld3)
DidUpdate := DidUpdate or UpdateField(TabelleA.Feld2, TabelleC.FeldF);
// ... usw.

LOCAL UpdateField(BfrField : FieldRef;AcctField : FieldRef) Updated : Boolean
Updated := BfrField.Value <> AcctField.Value;
if Updated then
begin
  if Direction then
    AcctField.Value := BfrField.Value
  else
    BfrField.Value := AcctField.Value;
end;


Das das so nicht geht habe ich gemerkt...
Geht so was ähnliches, oder muss ich für jeden Feldvergleich den gesamten Funktions-Sermon kopieren und anpassen?

... ach so ja:
Danke übrigens.

Re: Geht FieldRef ohne RecordRef?

16. September 2016 08:25

Hallo,

kannst Du hier nicht den Datentyp Variant verwenden?

Gruß

Michael

Re: Geht FieldRef ohne RecordRef?

16. September 2016 09:13

Diese Funktion für Recordvergleiche kann man leicht für Feldvergleiche umbauen.