[gelöst] Formular filtern

11. März 2009 16:37

Hallo Ihr,
ich habe eine Frage : Ich möchte gerne das Form 5050 (Customer) erweitern.
Mit der Suchfunktion habe ich leider nichts passendens gefunden. Also zur Filterung an sich gibt es 10000000 Beiträge. Doch beziehen die sich auf Reports :(
Angezeigt werden soll auf dem ersten Reiter ein Feld, welches zeigt, welchen Verantwortungsbereich ein Kontakt x hat.
Also ist mein Problem: dass er genau die Verantwortung anzeigen soll, die in Tabelle 5067 Contact Job Responsibility für die Kundennummer x
hinterlegt ist.

Meine Idee bis jetzt war, das Feld nur anzeigen zu lassen, wenn als Typ "Person" steht.
Dies habe ich im Form beim Trigger "OnAfterGetRecord" versucht einzugeben. Dies funktioniert auch.

verantwortung ist der Name des Textfeldes in dem die Verantwortung stehen soll.

IF Type = Type::Company THEN CurrForm.verantwortung.VISIBLE(FALSE) ELSE CurrForm.verantwortung.VISIBLE(TRUE);


Als Sourceexp habe ich für das Textfeld Table5067.Job Responsibility Code angegeben. Es reicht, wenn nur eine Verantwortung angezeigt wird.

Die "Verbindung" habe ich versucht auch im after get record des Forms einzurichten:
Verantwortlichkeit.SETRANGE("Contact No.","No.");

Jedoch führt dies nicht zum gewünschten Erfolg.

Ich wäre euch somit sehr dankbar, wenn ihr mir wieder helfen könntet. :)
Zuletzt geändert von Heiko_D am 12. März 2009 10:25, insgesamt 1-mal geändert.

Re: Formular filtern

11. März 2009 16:47

Hallo Heiko,

damit hier keine Verwechslungen stattfinden:
Die Tabelle 5050 heißt "Contact" (und nicht "Customer"; dies wäre nämlich die Tabelle 18)

Meine Vermutung, warum es bei dir nicht funktioniert:
Im OnAfterGetRecord filterst du zwar auf die Tabelle, jedoch greifst du nicht lesend auf sie zu.
Füge nach deiner Zeile (Verantwortlichkeit.SETRANGE("Contact No.","No.");) folgende Zeile hinzu:
Verantwortlichkeit.FINDFIRST;

Re: Formular filtern

11. März 2009 17:08

Vielen Dank für die rasche Antwort,

jedoch kann ich dies nicht testen, da sobald ich das Form 5050 öffne der FEhler erscheint, dass er für den ersten Kontakt keine Verantwortung findet.
Der erste Kontakt ist ein Mandant, darum könnte ich das mit

IF Type = Type::Person THEN Verantwortlichkeit.FINDFIRST

lösen.

Das wäre aber nur eine kurze Lösung, da der Fehler wieder kommt, wenn ich einen Kontakt (Person) öffne, die keine Verantwortung hat.

Ist die Reihenfolge wichtig beim eingeben des Codes?
Also momentan sieht er wie folgt aus:

IF Type = Type::Company THEN CurrForm.verantwortung.VISIBLE(FALSE) ELSE CurrForm.verantwortung.VISIBLE(TRUE);
Verantwortlichkeit.SETRANGE("Contact No.","No.");
Verantwortlichkeit.FINDFIRST;

Wäre für weitere Hilfe dankbar. :)

Re: Formular filtern

11. März 2009 18:15

Versuch mal folgendes:
Code:
CurrForm.verantwortung.VISIBLE(Type = Type::Person);
IF Type = Type::Person THEN BEGIN
  Verantwortlichkeit.SETRANGE("Contact No.","No.");
  IF NOT Verantwortlichkeit.FINDFIRST THEN
    CLEAR(Verantwortlichkeit);
END;

Re: Formular filtern

12. März 2009 10:24

vielen Dank für deine Hilfe.
Das Problem ist gelöst. :)