Domino 9 und frühere Versionen > ND9: Entwicklung

Variablen/ @IF in Formula

(1/2) > >>

der busse:
Moin,

ich stehe gerade etwas auf dem Schlauch.
Ich will eine neue Schaltfläche in der Symbolleiste erstellen und per Formula Telefonnummern auslesen.
Das funktioniert auch soweit. Wenn ich aber in einer @IF-Abfrage genau das gleiche mache, dann geht es nicht.

 Form := @GetField("Form");
ATel := @GetField("OfficePhoneNumber");
@Prompt([Ok];"ATEL"; ATel);
@If(
Form = "Person";
BTel := @GetField("OfficePhoneNumber") & @Prompt([Ok];"BTEL";BTel);
@Nothing)

ATel ist definiert, BTel nicht.
Warum ist das so? Ich finde gerade keinen Grund.

Hintergrund wegen dem @IF ist einfach, daß ich diese Schaltfläche in verschiedenen Datenbanken nutzen möchte.
Die Telefonnummern könnte man in ein paar DBs aus anderen Feldern ziehen. Insofern würde ich dann gerne die Variable für die Telefonnummer je nach DB befüllen und dann weitere Aktionen zum Startvorgang des Wählens ausführen.
Oder wie würdet Ihr so eine IF-Schleife bauen?

Peter Klett:
BTel := @If (Form = "Person"; OfficePhoneNumber; "")

Und bei verschiedenen Forms

BTel := @If (Form = "Form1"; Feld1; Form = "Form2"; Feld2; "")

jBubbleBoy:
innerhalb der @if Funktion nimmt man diese Funktionen ;)
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_SET.html
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_DO.html

ronka:
WENN du diesen Telefonnummer ein Feld zuweisen möchtest, dann fehlt dort noch ein stuckchen code.

mittels
FIELD Feldname := "Wert"
Oder innerhalb einen statement (z.B. @If )
@SetField( "Feldname", "Wert")

Sonnst macht den Formel brav zu ende, schreibt aber den ergebnisse im Nirvana, und das ist sicherlich nicht was du möchstest.

der busse:
Danke für die Antworten.

@Peter Klett : Die Idee hat was, dann könnte ich DBs, Forms usw. definieren und am Ende ein @DbLookup machen.
Muss ich mal mit etwas mehr Zeit als kurz vor Feierabend ausprobieren. ;)

@jBubbleBoy : OK. Wenn ich das richtig verstehe, soll Set die Variable setzen und Do sie mir auflösen.
Ich habe im If-Teil auch mal statt @Do(BTel) nur ein BTel rein geschrieben und das ging auch.

Test := 1;
BTEL := "Test";
@Prompt([Ok];"BTEL";BTel);
@If(
Test = 1;
@Set("BTel"; "Changed") & @Prompt([Ok];"BTEL"; @Do(BTel));
@Nothing);
@Return("")

@ronka: Ich will eigentlich nichts speichern, nur Telefonnummern auslesen und dann per @Command([Execute]; program; parameter) aufrufen. Und damit ich nur ein Icon zum Wählen habe, möchte ich mit dem @IF verschiedene Felder aus verschiedenen betroffenen DBs ziehen. Theoretisch könnte man das auch in ein Temporäres Dokument schreiben, aber das wäre wohl etwas hässlich.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln