Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: zhermann am 15.11.04 - 07:08:40
-
Hallo Leute,
habe mal wieder in Problemchen.
Ich möchte aus einer Listbox Daten in Felder eintragen lassen, wenn der User einen Eintrag auswählt. Ich versuche das über eine Formel in einen zweiten versteckten Feld zu schaffen. (Siehe Beispiel: Lotus Notes ... Bible Seite 211).
Irgendwie mache ich aber was falsch. Hier mal der Code:
vorname := @Trim(@Replace(@Word(F_APartner; "~"; 1);"#"; ""));
nachname := @Trim(@Replace(@Word(F_APartner; "~"; 2);"#"; ""));
telefon := @Trim(@Replace(@Word(F_APartner; "~"; 3);"#"; " "));
fax := @Trim(@Replace(@Word(F_APartner; "~"; 4);"#"; ""));
anrede := @Trim(@Replace(@Word(F_APartner; "~"; 5);"#"; ""));
suffix := @Trim(@Replace(@Word(F_APartner; "~"; 6);"#"; ""));
mail := @Trim(@Replace(@Word(F_APartner; "~"; 7);"#"; ""));
mobil := @Trim(@Replace(@Word(F_APartner; "~"; 8 );"#"; ""));
vertretung := @Trim(@Replace(@Word(F_APartner; "~"; 9);"#"; ""));
position := @Trim(@Replace(@Word(F_APartner; "~"; 10);"#"; ""));
info1 := @Trim(@Replace(@Word(F_APartner; "~"; 11);"#"; ""));
info2 := @Trim(@Replace(@Word(F_APartner; "~"; 12);"#"; ""));
info3 := @Trim(@Replace(@Word(F_APartner; "~"; 13);"#"; ""));
BIS HIER IST ALLES OK ! ;D
??? ::)
@If(F_APartner = ""; @Return("");
@Do(
@SetField("P_Vorname"; vorname);
@SetField("P_Nachname"; nachname);
@SetField("P_Telefon"; telefon);
@SetField("P_fax"; fax);
@SetField("P_Anrede"; anrede);
@SetField("P_Suffix"; suffix);
@SetField("P_Mail"; mail);
@SetField("P_Mobil"; mobil);
@SetField("P_Vertretung"; vertretung);
@SetField("P_Position"; position);
@SetField("P_Info1"; info1);
@SetField("P_Info2"; info2);
@SetField("P_Info3"; info3)
)
);
??? ::)
AB HIER IST AUCH WIEDER ALLES OK ! ;D
vorname + "~" + nachname + "~" + telefon + "~" + fax + "~" + anrede + "~" + suffix + "~" + mail + "~" + mobil + "~" + vertretung + "~" + position + "~" + info1 + "~" + info2 + "~" + info3
F_APartner ist die Listbox aus den die Werte gelesen werden. Ich denke es liegt irgend wie am @Do. Sieht einer von Euch den Fehler???
Gruß
Zsolt Hermann
-
Also wenn ich das Script hier bei mir einfüge und evaluiere, dann bekomme ich keinen Fehler. Allerdings habe ich auch Deine ganzen Felder etc nicht angelegt.
Was genau geht nicht?
Jenson
-
Moin,
sorry habe ich vergessen.
@SetFiled.... wird anscheinend nicht ausgeführt. Die Felder werden nicht ausgefüllt.
Komischerweise werden Sie aber beim öffnen des Doc einmalig gefüllt.
Gruß
Zsolt
-
Hi,
bevor du @SetField anwenden kannst musst du die Variablen deklarieren.
so z.B.
FIELD P_Vorname := P_Vorname;
...
@SetField("P_Vorname"; vorname);
Da musst du mit allen Feldern machen. Dann sollte das gehen.
Axel
-
Hallo Axel,
warum sollte ich das tun?
Die Felder sind in dem Doc vorhanden und werden ja beim öffnen des Doc einmalig richtig gefüllt. Wenn ich dann aber einen anderen Eintrag aus der Listbox auswähle passiert eben nix.
Ein versuch ist es aber mal wert.
Gruß
Zsolt
NACHTRAG: habe es mal mit einem Feld versucht: Es passiert nix.
-
Hi,
hier ein Auszug aus der Designer-Hilfe:
...
Bevor Sie @SetField in Ihre Formel aufnehmen, muß das Feld, dem ein Wert zugewiesen wird, bereits in derselben Formel deklariert worden sein. Dazu können Sie das Feld wie folgt am Anfang der Formel deklarieren:
FIELD Feldname:=Feldname;
...
Axel
-
Hi,
hast du auch mal versucht das Dokument zu aktualisieren?
Ich hab nämlich das Gefühl, dass das ein Aktualisierungsproblem ist.
Axel
-
Unter R6 muss man das Feld nicht mehr vorher initialisieren.
With Release 6, you no longer need to declare the field receiving the assignment prior to setting its value with @SetField. For R5 or earlier clients, declare the field at the beginning of the formula, as follows:
FIELD Fieldname:=Fieldname;
The field that @SetField creates and assigns the specified value to if the specified field does not exist in the document is not visible to the user. You can remove a field added to a form this way using the @DeleteField function.
Es muss also an etwas anderem liegen bzw. der Code wird unter Notes 5 ausgeführt.
Andreas
-
Hallo Glombi,
Notes 5 - Nein.
Server Version: Lotus Domino (r) Server (Release 6.5 for Windows/32)
Client Version: Lotus Notes 6.5.2
Beides: English
Das Beispiel welches ich am Anfang erwähnt habe funktioniert ohne Probleme bei mir. Einzigster Unterschied ist, das die DB lokal liegt und nicht auf dem Server.
Habe auch die Problem-DB schon lokal gereplt. Geht auch nicht. :-\
Gruß
Zsolt
-
Nochmal Ich,
habe die @If Abfrage mal soweit abgeändert:
@If(F_APartner = ""; @Return(""); @SetField("P_Vorname"; vorname));
Das gleiche Problem. Der Feldwert wird nicht geändert.
Gruß
Zsolt
-
Hi,
wo hast du den die Formel eingetragen? Du hast oben geschrieben in einem versteckten Feld. Was ist den das für ein Feld?
Versuch doch mal die ganze Formel in einen Hotspot zu packen, ob's dann funktioniert.
Axel
-
Hi,
die Formel versteckt sich in einen versteckten berechneten Feld.
Habe das Feldt auch schon sichtbar gemacht. Dort werden die Werte richtig eingetragen (vorname + "~" + nachname + "~" ...).
Mit einen Hotspot funktioniert es wunder bar.
Habe mal die Beispiel DB aus der Notes Bible (5.02. Keyword Table Example | Keyword Table) angehängt. Das Prinzip welches ich benutzen möchte ist das selbe. Nur funktioniert es bei mir nicht.
Gruß
Zsolt
-
@SetField kann man IMO so nicht verwenden. Das funktioniert nur in Agents, Aktionen, SmartIcons, etc.
-
Hi,
hast du in deiner DB beim Listenfeld die Optionen zur Dokumentenaktualisierung gesetzt?
Hauptsächlich betrifft es die Option: Felder bei Schlüsselwortänderung aktualisieren.
Axel
-
@SetField kann man IMO so nicht verwenden. Das funktioniert nur in Agents, Aktionen, SmartIcons, etc.
Doch es funktioniert. Ich hab's gerade getestet.
Axel
-
Hi Axel,
jo ist gesetzt. Habe auch dem Form gesagt, daß es automatisch aktualisieren soll.
Gruß
Zsolt
-
Hi,
aus der Ferne fällt mir jetzt nix mehr ein. Kannst du die DB hier mal reinhängen?
Vielleicht findet man dann das Haar in der Suppe (bzw. Datenbank).
Axel
-
Sorry Axel,
geht nicht, da Chefe auf sowas mit sofortiger Kündigung reagiert. Hatte mal einen Kollegen dem es so ergangen ist. Von wegen Firmeneigentum usw.
Gruß
Zsolt
-
Schade.
Irgendwie muss das an der Aktualisierung liegen. Aber ohne die DB vor Augen wird's schwierig.
Mal 'ne ganz blöde Frage. Das Dokument befindet sich doch im Editmodus, oder?
Axel
-
Hi Axel,
jo,
Habe mal die blöde Formel in das Event "QueryRecalc" eingefügt. Dort funzt es.
Gruß
Zsolt
-
schon mal am schluss der formel ein @command([ViewRefreshFields]) probiert?
-
Jo,
kommt aber das diese Aktion in diesem Kontext nicht erlaubt ist.
-
Hallo Leute,
nochmal zum @Do.
Habe rausbekommen, daß das @Do ausgeführt wird, aber nicht die aktualisierung der Felder (@Setfield....).
Die Felder werden aber beim öffnen des Forms aktualisiert. Habe jetzt versucht im Query- und/oder Postrecalc Event
@Command([Refreshwindow]) oder
@Command([ReloadWindow]) oder
@Command([RefreshHiddenFormulas]) oder
@Command([ViewRefreshFields])
auszuführen, aber ohne Auswirkung auf das ganze.
Ich habe keine Idee mehr. Hat einer von Euch noch eine Idee??
Warum funktioniert es in der Beispiel-DB und nicht bei mir? >:(
Gruß
Zsolt
-
Hallo Leute,
habe immer noch das Problem. Habe mir mal schnell eine andere DB zusammen geschoben. In der tritt das gleiche Problem auf.
Vielleicht sieht doch einer von Euch meinen Fehler.
Gruß
Zsolt
-
Hi,
ich hab's mal probiert und beide DBs miteinander verglichen. Ich finde keinen Haken warum deine DB sich nicht wie gewünscht verhält.
Im Moment bin ich da auch überfragt. Aber es ist eindeutig, in der Beispiel-DB funktioniert's. :-\
Axel
-
hmmm... lass mich raten:
Du programmierst noch nicht lange Notes, und Dir ist NICHT bekannt, dass Notes von OBEN NACH UNTEN und von LINKS NACH RECHTS berechnet....
In Der Test- Datenbank bedeutet das ganz einfach:
Setze Feld5 VOR Feld2 und Feld3, dann klappt's auch mit der Berechnung. Ansonsten siehst Du halt die Ergebnisse der @SetField erst, wenn Du das DOkument erneut refreshst.
HTH
Tode
-
Hallo Tode,
genau das ist es H U R R A !!!! ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
Jetzt geht es. Wenn man das nicht beachtet, kommt amn auch nicht dahinter!!!!!
Aller herzlichsten Dank.
Gruß
Zsolt
-
[VordenKopfschlagundSchäm]
Auweia! die Bearbeitungsreihenfolge ist mir doch bekannt. Hätt' ich eigentlich sehen müssen. Aber auf das Einfachste kommt man nicht.
:-[ :-[ :'(
[/VordenKopfschlagundSchäm]
Axel