Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MadMetzger am 05.05.03 - 08:49:08
-
Ich habe hier eine Formel, die ein Feld in einem anderen Dokument ändern soll und dies aber nicht tut. Woran kann das liegen?
Formel:
rest:=@GetDocField(@DbLookup("":"NoCache";"";"(Restanpassung)";ANTPersNrTX;5 );"DATRestNO");
neu:=rest - ANTTageINT;
@SetDocField(@DbLookup("":"NoCache";"";"(Restanpassung)";ANTPersNrTX;5 );"DATRestNO"; neu ) ;
@Command([FileSave]);
@Command([FileCloseWindow])
-
wo funktioniert es genau nicht..zerleg mal in Einzelteile...
erst die erste Zeile checken, wenns klappt, nächste Zeile ergänzen...
dann die zweite...
etc..
-
wenn ich mir das ergebnis von getdocfield anschauen will mit prompt, dann bleibt das fenster leer.
Code:
rest:=@GetDocField...
@Prompt ( [OK] ; "Info" ; rest )
was mache ich falsch?
-
Hi,
versuche noch Fehler bei DBLookup abzufangen:
@If(@IsError(DBLookup... ; "Fehler aufgetreten" ; DBLookup... )
Versuch nochmal folgendes:
@Prompt ( [OK] ; "Info" ; @Text(rest) )
-
(@DbLookup("":"NoCache";"";"(Restanpassung)";ANTPersNrTX;5)
was sein kann, daß ANTPersNrTX ein Feld ist und keine Variable. Wenn es das ist, dann muß es in Anführungszeichen gesetzt werden.
Die View muß natürlich 1:1 so heissen: "(Restanpassung)".
Die Spalte 5 sollte natürlich auch einen Wert enthalten. Kann ja sein, daß DbLookUp ein passendes Doc findet, nur der Wert in der 5. Spalte leer ist. Das vermute ich stark, weil sonst bei Dir der Fehler "Eintrag im Index nicht gefunden" kommen würde. Stattdessen ist der Prompt leer. ODER, es ist eine Zahl, wie es Harvey mit @text berücksichtigt hat bei der prompt Ausgabe
-
was sein kann, daß ANTPersNrTX ein Feld ist und keine Variable. Wenn es das ist, dann muß es in Anführungszeichen gesetzt werden.
Das war das Problem... Hab es in Anführungszeichen gesetzt und schon funktionierte es...
Danke!
-
Klappt doch so nicht!
Habe "ANTPersNrTX" in Anführungszeichen gesetzt, hat nichts bewirkt. Der Ansichtsname ist richtig geschrieben, in der Spalte 5 befindet sich die UniqueID der Dokumente in denen geschrieben werden soll.
Ich versteh es einfach nicht. Vor allem hat es erst funktioniert...
-
... nimm die DocID mit @Text() - vielleicht hilft das...
ata
-
So steht sie in dem Feld drin.
Habe noch mal getestet, wenn ich nur den DbLookup mache, kommt Eintrag im Index nicht gefunden als Fehlermeldung.
Die Ansicht ist aber sortiert, ein passendes Dokument ist auch vorhanden.
-
ANTPersNrTX in Anführungszeichen war falsch, jedoch bleibt das @Prompt leer, wenn ich mir GetDocField ausgeben lassen will. Wenn ich dabei @GetDocField mit @Text ausgeben lassen will, kommt eine Fehlermeldung, ohne bleibt der Prompt leer.
-
rofl...weißte was...schmeiß das Teil gezipped mal hier rein...entschlackt soweit um die Maske, um die es geht, die View und einige Testdocs. Irgendwas muß es sein.
-
hier die Datenbank...
ich versteh nicht, warum es nicht funktioniert...
EDIT: Sorry!
In der Maske UrlaubsAntrag die Aktion Genehmigung durch Vorgesetzten.
Da sollte ein Feld in der Maske Stammdaten verändert werden.
-
ähem..wärest Du bitte so nett und sagst auch in welcher Form und in welchem Feld das Problem auftritt ::)
-
Sorry!
In der Maske UrlaubsAntrag die Aktion Genehmigung durch Vorgesetzten.
Da sollte ein Feld in der Maske Stammdaten verändert werden.
-
Hi,
ich hab' mal ein bisschen probiert:
Bei der TEST-Aktion im Urlaubsantrag wird der Resturlaub dann angezeigt wenn die Formel so aussieht:
@Prompt([OK];"TEST";@Text(@GetDocField(@Text(@DbLookup("":"NoCache";"";"(Restanpassung)";ANTPersNrTX;5 ));"DATResturlaubNO")))
Ändere deine Formel mal so ab, das bei @SetDocField und @GetDocField überall @Text vor dem @DbLookup steht.
Dann sollte es gehen.
Axel
-
Hat es bei dir funktioniert?
Bei mir funktioniert es nämlich nicht... ich drehe gleich durch...
Woran kann es denn hapern?
-
Hi,
yoo, hat funktioniert. Ich hab mir die Test-Aktion vorgenommen.
Der Resturlaub wurde mir angezeigt.
Ich hab' allerdings mit 'nem 5er Client getestet, da mir kein 4.x mehr zur Verfügung steht. Sollte aber damit nichts zu tun haben.
Axel
-
Habe sowohl als auch getestet, hat bei beiden nicht funktioniert.
An R4<=>R5-Probleme hatte ich gar nicht gedacht, da es in der Formelsprache ja keine oder kaum Unterschiede gibt...
Hast du dir mal die Aktion als Script-Variante angeschaut? Ist testweise in dem Urlaubsantrag drinnen, funktioniert aber nicht ganz. Das heißt der dann geöffnete Antrag ändert sich nicht, nur der Zugriff auf Stammdaten funktioniert. Kann man das nicht noch soweit anpassen, dass es damit geht? Bzw. was müßte man ändern oder einfügen?
-
Hi,
die Anpassungen sind abhängig davon, was sich ändern soll.
Eigentlich brauchst du nur die entsprechenen Felder mit Werten zu füllen, z.B. neu berechneter Resturlaub usw. und dann ein Refresh auslösen (aus Klasse NotesUIdocument).
Axel
-
Also die Felder ändere ich im Backend, mit dem Objekt doc und speichere dieses.
Und dann nur uidoc.Refresh? Oder wie?
Andere Frage, wie schließt man in Script Fenster (analog FileCloseWindow)?
-
Hi,
Also die Felder ändere ich im Backend, mit dem Objekt doc und speichere dieses.
Und dann nur uidoc.Refresh? Oder wie?
Genau so.
Andere Frage, wie schließt man in Script Fenster (analog FileCloseWindow)?
Call uidoc.close
Axel
-
klappt ja fast, nur merkt er sich nicht die Werte die ich im Backend geschrieben habe...
Wann muss ich den am optimalsten den Refresh auslösen?
-
Hi,
eigentlich nach dem du die Felder gefüllt hast und vor dem Speichern.
Axel
-
Hab das ganze dann doch mit Script gelöst, das funktioniert auf jedenfall!
Danke nochmal für die Hilfe!