[Gelöst] Wert aus anderen Tabelle filtern

16. Juni 2009 17:03

Hallo zusammen, ich sitze seit geraumer Zeit vor einem Problem.
Ich habe 2 Tabellen, welche für die Verwaltung von Mietfahrzeugen dienen soll, angelegt. Eine für den Kopf einer Form und die andere für die Subform. Im Kopf wird eine Mietfahrzeugnummer geführt, die sich auch in der Subform Tabelle wieder findet.
Nun möchte ich einfach nur ein Wert aus dem Kopf in die Zeile schreiben lassen und es funzt nicht.
Ich hab irgendiwe das Gefühl das nicht korrekt der Kopf gefiltert wird. Wer kann helfen?

Code:
VehiclesHeader.RESET;
VehiclesHeader.SETCURRENTKEY(VehiclesHeader."No.");
VehiclesHeader.SETFILTER(VehiclesHeader."No.",VehiclesLines."Vehicle No.");
  IF VehiclesHeader.FIND('-') THEN
  "Rental rate tmp" := VehiclesHeader."Rental rate-accident replace.";


Viele Grüße, Patrick
Zuletzt geändert von Haube1X am 18. Juni 2009 15:15, insgesamt 1-mal geändert.

Re: Wert aus anderen Tabelle filtern

16. Juni 2009 17:59

Langsam :-)
Wann wird dieser Code aufgerufen?
Wo ist dieser geschrieben?

Re: Wert aus anderen Tabelle filtern

17. Juni 2009 07:30

Er wird aufgerufen, wenn in einer Zeile ein Optionwert geändert wird (OnValidate Trigger) und geschrieben hab ich ihn in der Tabelle VehiclesLines, in dem besagten Optien Feld.
Ich hoffe ich war nicht wieder zu schnell :-)

Re: Wert aus anderen Tabelle filtern

17. Juni 2009 08:27

Ah, OK.

Dann hätte ich den Code hier erwartet:
Code:
VehiclesHeader.GET("Vehicle No.");
"Rental rate tmp" := VehiclesHeader."Rental rate-accident replace.";


Mir scheint, also hättest du das Konzept von GET, FIND und überhaupt der Verknüpfung von Records noch nicht wirklich verstanden ;-)
SETRANGE/SETFILTER + FIND verwendest du nur dann, wenn du nicht alle Primärschlüsselfeldinhalte des (einen) gesuchten Datensatzes kennst. Dies ist jedoch hier der Fall.
Weiterhin kommst du mit den Records durcheinander. Was wolltest du mit
Code:
VehiclesLines."Vehicle No."
erreichen? Woher kommt VehiclesLines, wo wird dies gefüllt?
Ich nahm an, du meinst das Feld im aktuellen Datensatz = Rec = kann ausgelassen werden.
Ich hätte also auch schreiben können
Code:
...
VehiclesHeader.GET(Rec."Vehicle No.");
...


Was ist auch nicht verstehe: Wieso soll das Feld "Rental rate tmp" jedes Mal beim Validate eines bestimmten Feldes gefüllt werden? Warum nicht schon einmalig beim INSERT?

Re: Wert aus anderen Tabelle filtern

18. Juni 2009 15:13

Hi Natalie, vielen Dank für deine Hilfe. Es funktioniert... total simpel :oops:
Da ich noch ein blutiger Anfänger bin, versuche ich mir das Wissen Problemorientiert anzueigenen. Für die Theorie bleibt mir leider keine Zeit :-(
Das Feld "Rental rate tmp" möchte ich beim Validate eines Option Feldes füllen lassen, da im Kopf für jedes Fahrzeug 3 verschiedene Mietpauschalen hinterlegt werden sollen.
In der Zeile (also pro Mietvorgang) soll dann ein Optionwert gewählt werden und damit wird der Mietpreis für die Zeile gezogen.
Die anderen Fragen kann ich, nachdem ich die Lösung kenne, nicht mehr beantworten :-)

Re: [Gelöst] Wert aus anderen Tabelle filtern

18. Juni 2009 15:27

Aaaah, also etwas in dieser Art:

Code:
VehiclesHeader.GET("Vehicle No.");
CASE "DeinOptionsfeld" OF
  "DeinOptionsfeld"::"Wert1" : "Rental rate tmp" := VehiclesHeader."Rental rate-accident replace.";
  "DeinOptionsfeld"::"Wert2" : "Rental rate tmp" := VehiclesHeader."Anderes Feld1";
  "DeinOptionsfeld"::"Wert3" : "Rental rate tmp" := VehiclesHeader."Anderes Feld2";
END;

Re: [Gelöst] Wert aus anderen Tabelle filtern

18. Juni 2009 16:39

Genau, nur sieht dein Quellcode besser aus.
Ich hab es mit der IF Anweisung gelöst. Werde aber deinen Vorschlag übernehmen.
Mir fehlt spürbar die Erfahrung...von daher ein HOCH auf dieses Forum.