Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Syeg am 19.09.05 - 14:36:55

Titel: @setfield und @if
Beitrag von: Syeg am 19.09.05 - 14:36:55
Folgende Formel liefert nicht was ich erwarte:

PrA := @DbLookup( "Notes" : "NoCache" ; "" ; "Kostenarten"  ;Art ; 2);
PrS := @DbLookup( "Notes" : "NoCache" ; "" ; "Kostenstellen"  ;Stelle ; 2);
FIELD RgPrüfer := RgPrüfer;
@SetField("RgPrüfer";@If(@IsError(PrA);PrS;PrA));

Was ist falsch?

Danke im Voraus!
Titel: Re: @setfield und @if
Beitrag von: mibo11 am 19.09.05 - 14:42:58
Was liefert denn die Formel und was erwartest du?

Gruß Sascha
Titel: Re: @setfield und @if
Beitrag von: diali am 19.09.05 - 14:44:41
Welches Verwalten erwartest Du denn?

Persönlich halte ich nichts von Umlauten in Feldnamen.
Titel: Re: @setfield und @if
Beitrag von: Syeg am 19.09.05 - 14:47:50
Entschuldigt die Unklarheiten, aber DIE NERVEN..!

Ich erwarte im Feld RgPrüfer einen der gefundenen Werte PrA oder PrS, und zwar PrS (den zweiten) nur wenn der erst, PrA, nicht vorhanden ist.

Liefern tut das ganze eine 1
Titel: Re: @setfield und @if
Beitrag von: diali am 19.09.05 - 14:52:53
Hast Du mal die Ansichten geprüft, ob dort die Keys Art und Stelle vorhanden sind und was in Spalte 2 steht?

Was steht in PrS und PrA?
Titel: Re: @setfield und @if
Beitrag von: mibo11 am 19.09.05 - 14:56:06
Folgende Formel liefert nicht was ich erwarte:

PrA := @DbLookup( "Notes" : "NoCache" ; "" ; "Kostenarten"  ;Art ; 2);
PrS := @DbLookup( "Notes" : "NoCache" ; "" ; "Kostenstellen"  ;Stelle ; 2);
FIELD RgPrüfer := RgPrüfer;
@SetField("RgPrüfer";@If(@IsError(PrA);PrS;PrA));

Das Ergebnis 1 ist doch schon einmal etwas, zeigt zumindest, dass da ein Wert zurückgeliefert wird. Es wäre zunächst einmal wichtig zu erfahren, ob der Wert nun aus PrA oder PrS zurückgeliefert wird, d.h. ob PrA auf einen Fehler läuft. Was mir nicht so ganz klar ist, warum prüfst du auf Fehler? Die zurückgelieferte 1 sollte eigentlich schon ein richtiger Wert sein. Wenn nämlich PrA ein False zurückliefern würde, bekommst du einen anderen Wert zurück.

Gruß Sascha
Titel: Re: @setfield und @if
Beitrag von: Syeg am 19.09.05 - 15:00:59
Also, habe vorher mit @Prompt gesehen, dass ich die richtigen Werte in den beiden oder einer der Variablen (je nach Wert von "Art" und "Stele") erhalte.

Ich hatte noch am Schluss:
@prompt([ok];"Prüfer";">"+RgPrüfer+"<");

Dieses wird aber gar nicht ausgeführt, als würde die Formel vorher "Abstürzen".

Bei fehlenden Werten in den Ansichten erhalte ich:    
FEHLER: Eintrag im Index nicht gefunden, oder der Index ist für die Ansicht nicht aufgebaut

Nun?   
Titel: Re: @setfield und @if
Beitrag von: mibo11 am 19.09.05 - 15:06:36
Nur so eine Checkliste zum Prüfen.

1.) Sind die Ansichten "Kostenarten" und "Kostenstellen" in der ersten Spalte sortiert?

2.) Welche Werte werden verglichen? Liefern die Felder "Art" und "Stelle" die gleichen Datentypen wie in den sortierten Spalten abgefragt werden?

3.) Ist das Feld RGPrüfer vom gleichen Datentypen, wie die Werte PrA oder PrS?

Gruß Sascha
Titel: Re: @setfield und @if
Beitrag von: mibo11 am 19.09.05 - 15:07:42
Nachtrag:

Fragt doch mit deinem Prompt vorher noch die Felder "Art" und "Stelle" und danach die Werte "PrA" und "PrS" ab.

Titel: Re: @setfield und @if
Beitrag von: Syeg am 19.09.05 - 15:16:05
1.) Die Ansichten sind sortiert in der ersten Spalte
2.) Es sind Ansichten über die gleichen Dokumente (Maske "Kostenträger", welches die "Art der Trägerschaft(!)" als Merkmal enthält, und welches zu den beiden Ansichten führt).

3.) Prompts liefern das erwartete

ÜbrigenS. natürlich auch einen Gruss und Danke für die bisherigen Mühen,
Esteban
Titel: Re: @setfield und @if
Beitrag von: mibo11 am 19.09.05 - 15:22:57
3.) Prompts liefern das erwartete

Wenn die Prompts das erwartete liefern, d.h. PrS und PrA die gewünschten Werte, dann liefert

FIELD RgPrüfer := RgPrüfer;
@SetField("RgPrüfer";@If(@IsError(PrA);PrS;PrA));


PrA keinen Fehler, also läuft deine @If Abfrage nicht auf einen Fehler und liefert PrS zurück.

Hast du einen Schreibfehler im Feldnamen RgPrüfer. Gibt es ggf. noch eine Eingabeumsetzungsformel in diesem Feld? Welcher Code wird ggf. noch ausgeführt? Wo läuft die Formel (Schaltfläche, etc.)?

Gruß Sascha
Titel: Re: @setfield und @if
Beitrag von: Syeg am 19.09.05 - 15:36:03
Ja, so ist es, oder besser sollte es sein.
Es geht um ein Feld in einer Maske und die Formel habe ich jetzt "beim Anzeigen" und "beim Anlegen" probiert. Auch einfach mit "Berechnet". Aber der Wert ist immer noch einfach 1.

seuffst (Notes kommt von Not?)
Titel: Re: @setfield und @if
Beitrag von: Syeg am 19.09.05 - 15:37:42
Nachtrag:

Kein Schreibfehler in Feldnamen.
Keine Eingabeumsetzungsformel.
Kein weiterer Code.
Titel: Re: @setfield und @if
Beitrag von: mibo11 am 19.09.05 - 15:42:20
Beim Anlegen, (ich nehme an du meinst das Postopen Event) hast du keine Chance, da zu diesem Zeitpunkt deine Schlüsselfelder (Art oder Stelle), die du als Vergleichswert benutzt wahrscheinlich noch nicht gesetzt sein dürften, da ja der Benutzer zunächst die Felder Art, bzw. Stelle  beschreibt und du danach die DBLookup's startest.

Sofern dies immer noch kein Ansatz ist, schreib mir doch einmal kleinlichst auf, wo der Code abläuft, welche Datentypen die Felder haben, ob Sie berechnet sind oder bearbeitet, usw.

Gruß Sascha
Titel: Re: @setfield und @if
Beitrag von: Syeg am 19.09.05 - 16:01:36
I.o.
1. Beim Versuch, ein neues Dokument zu erstellen, komme ich auf den Fehler "Feld: RgPrüfer: Eintrag im Index nicht gefunden, oder der Index ist für die ansicht nicht aufgebeut", was logisch ist, de - wie du bemerkt hast - die beiden steuernde Felder Art und Stelle ja leer sind.

2. Daher habe ich bisher mit "Bearbeiten" (Doppelclick) auf vorhandenes Dokument aus vorheriger Version, mit den beiden Feldern Art und Stelle aber noch ohne RgPrüfer.

3. Es geht schlussendlch darum, dass diese Dokumente als Mail oder von einem Agenten erstellt werden und nacher der Agent "Wenn Dokumente eingefügt werden" die nötigen ergänzungen durchführt.

In dieser ersten Phase geht es mir um das Testen, ob meine Idee überhaupt klappt! Und siehe da, sie klappt nicht!
Titel: Re: @setfield und @if
Beitrag von: mibo11 am 19.09.05 - 21:17:23
Ich bleibe dabei, dein Timing ist das falsche. Zu dem Zeitpunkt wenn du die DBLookups machst, hast du keine Schlüsselwerte (also Art oder/und Stelle sind leer, bzw. haben den falschen Wert).

Du schreibst, dass du über die Prompts die Werte für PrA und PrS ausgelesen hast. Das kann nicht sein, zumindest nicht in der Feldformel, sonst würdest du den Fehler: Feld: RgPrüfer: Eintrag im Index nicht gefunden, oder der Index ist für die ansicht nicht aufgebeut nicht bekommen, da danach nur noch der @SetField kommt, der dir entweder PrS oder PrA zurückliefert.

So ganz blicke ich bei dir auch nicht mehr durch. Zum einen schreibst du, du erhälst den o.g. Fehler, zum anderen bekommst du den Wert 1 zurückgeliefert.

Versuche doch einfach einmal mit einem Button die Formel aufzulösen, indem händisch die Felder Art und Stelle beschreibst und danach den Button klickst.

Gruß Sascha
Titel: Re: @setfield und @if
Beitrag von: Syeg am 20.09.05 - 07:55:38
Gut - Danke für den Ratschlag!

Und nochmals Danke, Sascha, für deine Bemühungen.

Gruss, Esteban