[Gelöst] FlowField - Lookup mit Bedingung versehen

17. Januar 2008 15:34

Hallo,

ich habe da so mein Problemchen mit einem FlowField. Habe mir schon den Kopf zerbrochen, finde aber keine gescheite Lösung. Ich versuche mal den Fall so gut wie möglich zu beschreiben:

Beschreibung aktuelle Lösung:

Wir haben im OnValidate Trigger des Tabellenfeldes "Status" einen Code hinterlegt, der einen Eintrag in der Tabelle "Benachrichtigungen" erzeugt. Hierbei wird in Abhängigkeit des Feldinhaltes "Status" der entsprechende Kontakt ermittelt und in die Tabelle "Benachrichtigungen" geschrieben.

Eines der Felder der Tabelle "Benachrichtigungen" ist ein Flowfield mit folgender CalcFormula:

CalcFormula = Lookup(Structure.E-Mail WHERE (Structure No.=FIELD(Gliederungsnr.)))



Neue Anforderung:

Je nach Feldinhalt des Tabellenfeldes "Status" (Normal oder InAufnahme) muss die Kontakt-Email des Ansprechpartners aus einer anderen Tabelle ermittelt werden. Bsp.

Code:
If Status = Normal then
begin
  Gliederung.Get(Benachrichtigung.Gliederungsnummer);
  Benachrichtigung.Email := Gliederung.Email;
  Benachrichtigung.INSERT;
end;

If Status = InAufnahme then
begin
  Contact.get(Benachrichtigung."Contact No.");
  Benachrichtigung.Email :=  Contact.Email;
  Benachrichtigung.INSERT;
end;


Oder halt mit einem CASE :)

Mein Problem:

Ich könnte ja theoretische einfach die Fieldclass von FlowField auf Normal umstellen und die o. g. Bedingung im OnValidateTrigger des Feldes Status einbauen. Allerdings wird die Tabelle Benachrichtigungen noch von anderen Events befüllt. Außerdem wüden wohl meine vorhandenen Einträge im Feld Email verloren gehen, da diese ja nicht mehr über das FlowField ermittet werden.

Meine Frage:

Besteht die Möglichkeit die o. g. genannte Bedingung in der CalcFormula zu hinterlegen? Sprich, je nach Event (Status = InAufnahme oder Status = Normal) den Lookup auf verschiedene Tabelle zu machen?

Re: FlowField - Lookup mit Bedingung versehen

17. Januar 2008 15:58

mgerhartz hat geschrieben:Besteht die Möglichkeit die o. g. genannte Bedingung in der CalcFormula zu hinterlegen? Sprich, je nach Event (Status = InAufnahme oder Status = Normal) den Lookup auf verschiedene Tabelle zu machen?


Leider nein.
Man hat aber Möglichkeiten, sowas nachzubilden.

Entweder man löst es über ein NormalField und muss dies ständig aktualisieren,
(Vorteil: man kann darauf filtern und suchen)

oder man arbeitet ganz ohne Tabellenfeld:

Erstelle in der Tabelle, in der du diesen Wert abrufen möchtest, eine Funktion, die genau das berechnet, was du möchtest. Versehe sie mit einem Rückgabewert: dem berechneten Ergebnis.
Füge auf allen Forms (!), in denen du den Wert brauchst, eine Textbox ein und gebe als SourceExpr an: "DeinFunktionsname".
Funktioniert wunderbar, hat aber den Nachteil, dass du auf diesem Feld, das es nur auf der Form und nicht in der Tabelle gibt, weder filtern noch suchen kannst.

17. Januar 2008 17:23

Hi Natalie,

danke für Deinen Tipp. Werde ich dann wohl so probieren müssen.

Gruß

Markus