Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Selin am 03.05.04 - 10:45:01
-
Hallo,
wie kann ich Werte aus einem Feld im Antwortdokument in das Hauptdokument übergeben?
Es sind Zahlenfelder.
Ich möchte den Inhalt des Feldes "Anzahl", das bei jedenm erstellen des Antwortdokumentes auf "1" gesetzt wird im Hauptdokument quasi zusammenrechnen.
danke Euch
-
Hi Selin,
jedes Antwortdokument hat im Feld $Ref die UNID des Hauptdokumentes stehen.
Im Querysave des Antwortdokuments kannst du dann mit
Set notesDocument = notesDatabase.GetDocumentByID( noteID$ )
Das Hauptdokument holen dein Feld ändern und abspeichern.
Du solltest aber bedenken, daß du, wenn Antwortdokumente gelöscht werden, dein Zähler wieder runterzählst.
HTH
-daniel
edit:
Natürlich darfst du im QS nur bei neuen Antwortdokumenten den Zähler rauf zählen...
-
Hi,
danke erst mal für die Antwort.
Ich kann kein Script. :-[
Kannst du mir sagen, wie ich das mit dem zähler mache?
Danke
-
Du könntest auch @SetDocField verwenden.
Ich wäre bei solchen Stunts aber vorsichtig, so wie mehrere Leute, womöglich noch auf unterschiedlichen Servern oder mit lokalen Repliken arbeiten, sind Replizierkonflikte praktisch vorprogrammiert.
Bernhard
-
Hallo Zusammen,
ichhabe es mal mit @SetDocField versucht.
Die Werte werden zwar übergeben aber nach dem Speichern kommt erst mal die Meldung
"Variant does not contain an object"
Meine Formel sieht so aus:
@SetDocField($Ref; "hin"; hin_ja1 )
Grüsse
-
Das ist etwas merkwürdig. Die Fehlermeldung ist eigentliche eine typische LotusScript-Fehlermeldung. Was hast Du denn im QuerySave-Event der Maske eingestellt ?
Bernhard
-
... oder im PostSave, da es ja nach dem Speichern auftaucht.
-
stimmt. Ich hatte noch was im QuerySave
Danke
Eine Frage hab ich noch
Wenn ich den Wert aus dem Antwortdokument in das Feld im Hauptdokument schreibe, muss er mir ja mehrere Werte (je nach Anzahl der Antworten) ind as Feld im Hauptdokument reinschreiben.
Habe dem Feld auch die Eigenschaft "Mehrfachwerte zulassen" aktiviert
Aber da steht immer nur ein Wert drin, obwohl ich mehr als ein Antwortdokument habe
Woran kann das liegen?
-
Habe dem Feld auch die Eigenschaft "Mehrfachwerte zulassen" aktiviert
Aber da steht immer nur ein Wert drin, obwohl ich mehr als ein Antwortdokument habe
Kannst Du das mal etwas genauer beschreiben ?
-
Für Mehrfachwerte ist deine Formel nicht korrekt. So überschreibt er immer den Wert mit einem Neuen.
Dann müßtest Du so was in der Art verwenden :
@SetDocField($Ref; "hin"; hin:hin_ja1 )
-
da steht dann immer ""; "ja" im Feld hin drin
auch wenn ich z.B. 5 Antworten habe
??? ??? ???
-
Logisch.
hin ist ja auch kein Feld aus dem aktuellen Dokument. Du must Dir vor dem @SetDocField erst mit @GetDocField den Wert von hin holen und dieses mit hin_ja1 verketten - das ganze am besten in eine temp. Variable. Anschliessend noch ein @Trim drüber, damit - insofern nicht gewünscht - Leerzeichen aus der Textliste eliminiert werden.
Bernhard
-
ich krieg das nicht gebacken :(
habe jetzt immer "ja"; "ja" in dem Feld hin stehen.
Auch wenn ich nur eine Antwort habe
Habe folgende Formel:
FIELD temp :=@Trim(@GetDocField($Ref; "hin"));
temp : hin_ja_1;
@Trim(@SetDocField($Ref; "hin";temp: hin_ja1 ))
was ist daran falsch?
-
Hallo
Ich habe mit folgender Formel das Ergebnis das du haben willst:
FIELD temp :=@Trim(@GetDocField($Ref; "gesamt"));
@If(temp="";@Trim(@SetDocField($Ref; "gesamt";ergebnis));@Trim(@SetDocField($Ref; "gesamt";temp : ergebnis )))
aber leider nicht wenn ich eine neue Antwort erstelle und schon ein Eintrag in dem Feld im Hauptdokument drin steht.
Dann kommt eine Fehlermeldung, das die UNID nicht stimmt.
Wenn ich aber den Eintrag im Feld des dann schon existierenden Antwortdokumentes vornehme geschieht genau das was soll. (Eintrag wieder löschen fehlt noch, ist ein bisschen komplizierter)
Ich werde noch mal was ausprobieren vielleicht fällt aber noch einem was zu diesem Problem ein!
Grüsse; Krista
-
Hallo, habe meinen Fehler gefunden!
Wenn man eine Antwort erstellt, ist vor dem Speichern kein $Ref vorhanden.
Also am besten ein verstecktes Feld(z.B ID) ins Hauptdokument mit
@Text(@DocumentUniqueID)
Dann ein verstecktes Feld(z.B. MainID; Berechnet beim Anlegen) in die Antwort an das dieser Feldwert übergeben wird.
Dann die Formel noch entsprechend anpassen:
FIELD temp :=@Trim(@GetDocField(MainID; "gesamt"));
@If(temp="";@Trim(@SetDocField(MainID; "gesamt";ergebnis));@Trim(@SetDocField(MainID; "gesamt";temp : ergebnis )))
und schon klappt es auch mit dem QUERYSAVE!
Grüsse, Krista
-
Hallo webchild,
danke für Deine Antwort.
Habe es ausprobeiert.
Klappt fast. Mir wird in das Feld hin (ergebnis) der Inhalt von hin_ja1(gesamt) pro Antwortdokument 2x mal reingeschrieben.
Also wenn ich auf dem Antwortdokument hin_ja1(gesamt) (ist ein Kontrollkästchen) aktiviere, wird im Hauptdokument in das Feld hin (ergbenis) der Inhalt also "ja" 2x mal reingeschrieben.
Gruß
Selin
-
Hallo Selin,
kopier doch mal bitte die Formel die du einsetzt (Damit ich shen kann ob die Formel richtig umgesetzt wurde).
Das es zweimal eingetragen wird, könnte z.b. daran liegen das du evtl. in mehreren Aktionen (Querysave, Postsave usw.) Formeln eingetragen hast die diesen Eintrag auslösen und nicht alle wieder gelöscht hast. Oder in der formel ist noch ein Fehler!
Grüße, Krista
-
Hallo Krista,
hier die Formel im Querysave:
FIELD temp :=@Trim(@GetDocField(MainID; "hin"));
@If(temp="";@Trim(@SetDocField(MainID; "hin";hin_ja1));@Trim(@SetDocField(MainID; "hin";temp : hin_ja1 )));
FIELD temp1 :=@Trim(@GetDocField(MainID; "zurueck"));
@If(temp1="";@Trim(@SetDocField(MainID; "zurueck";zur_ja1));@Trim(@SetDocField(MainID; "zurueck";temp1 : zur_ja1 )))
Danke + Gruß
-
Hallo Selin,
die Formel scheint vollkommen korrekt zu sein!
Hast du die Formeln in einer Testdatenbank? So das du einfach die Felder im Hauptdokument leeren kannst und dann die Antwortdokumente noch mal abspeicherst und kontrollierst ob wirklich jeder Entrag 2 mal abgespeichert wird!
Und dir ist ja bewußt das durch den Eintrag im Querysave der Maske bei jedem erneuten speichern eines Antwortdokumentes ein Eintrag gemacht wird! Um das zu verhindern müßte man noch ein paar Abfragen einbauen!
Grüße, Krista
-
Hi Krista,
ja das ist ne Testdatenbank. Also ich erstelle die Dokuemnte alle neu und die Antwortdokumente ebenso. Der Inhalt ist imemr zweimal "ja"
???
Gruß,
Selin
-
Hast du einen Vorgabewert für das "Hin" Feld?
Werden den jedesmal 2 Einträge gemacht? Auch wenn du weitere Antworten anlegst mit "Nein" mal als Wert?
Und steht in den anderen Aktionen der Antwortmaske auch sicher nichts mehr was den Eintrag hevorrufen könnte! (siehe Bild)
Wie sind die Felder angelegt? Einfache Textfelder - bearbeitbar oder sind da auch Formeln hinterlegt?
Also die Formel sollte so wie sie da hinterlegt ist funktionieren wenn nicht andere Einstellungen dazwischen funken!
Wenn du nicht weitekommst, kannst du mir gerne die TestDB mailen!
Grüße, Krista
-
Hi,
also ich habe auf dem Hauptdokument ein Feld hin (berechnet. Wert = hin, Mehrfahwerte zulassen)
Auf dem Antwortdokument ist das Feld hin_ja1 (Kontrollkästchen)
Im Querysave ist die Formel:
FIELD temp :=@Trim(@GetDocField(MainID; "hin"));
@If(temp="";@Trim(@SetDocField(MainID; "hin";hin_ja1));@Trim(@SetDocField(MainID; "hin";temp : hin_ja1 )));
Also wenn ich hin_ja1 ankreuze und das Antwortdokument abspeichere wird in das Feld hin im Hauptdokument der Wert aus hin_ja1 reingeschrieben.
Wenn ich das Feld nicht ankreuze, dann steht in hin auch nix drin.
Nur wie gesagt, wird pro Antwortdokument, bei dem auch hin_ja1 angekreuzt ist in das Feld hin im Hauptdokument 2x der Wert aus hin_ja1 reingeschrieben.
-
Ich würde die Formel noch um folgende Abfrage erweitern.
Also die Formel stimmt, bei mir funktioniert es einwandfrei so wie ich es beschrieben habe!
FIELD temp :=@Trim(@GetDocField(MainID; "hin"));
@If (hin";hin_ja1="";"";@If(temp="";@Trim(@SetDocField(MainID; "hin";hin_ja1));@Trim(@SetDocField(MainID; "hin";temp : hin_ja1 ))));
Also ich schicke dir eine Kopie einer Datenbank, wo ich (unter anderem) die wichtigsten Elemente drin habe zu und vergleiche sie bitte mit deinen Einträgen:
Die Maske "Dokument" mit den geänderten Feldern "gesamt" und "ID",
die Maske "Antwort" mit den geänderten Feldern "MainID" und "ergebnis" und der Änderung nur im Querysave der Maske "Antwort"!
Falls du damit nicht weiterkommst müsste ich doch mal in deine Testdatenbank reinschauen!
Grüße, Krista
-
Danke Dir