Hallo zusammen :-)
Ich habe folgendes Problem ohne Lösung:
Ich erstelle gerade ein Notes-DB für Personalveränderungen.
3 Bereiche erfassen Daten, dann sollen Checklisten erstellt werden für verschiedene Bereiche.
Der Personalveränderungsbogen ist ein Dokument, die Checklisten sind Antwortdokumente.
Ich habe mir schon eine Schaltfläche erstellt, die mit dem folgenden Code die Checklisten erstellt und die Felder so füllt wie ich es eigentlich haben möchte:
REM {Bereiche auswählen, die diese Checkliste haben};
_bereiche := @DbLookup ("":"NoCache" ; "":"" ; "(LUAufgaben)"; PVB_Vorfall; 2);
_aufgaben := @DbLookup ("":"NoCache" ; "":"" ; "(LUAufgaben)"; PVB_Vorfall; 3);
REM {Schleife - Erstellt die Checklisten und füllt einige Felder aus};
@If(@Elements(_bereiche) = 0; @Return(0); "");
n := 1;
@DoWhile(
@Prompt([Ok]; "Bereich " + @Text(n); _bereiche[n] + _aufgaben );
@Command([Compose]; "MSK_Checkliste");
@Command([EditGotoField]; "CHK_Bereich");
@Command([EditInsertText]; _bereiche[n]);
@Command([EditGotoField]; "CHK_Vorfall");
@Command([EditInsertText]; PVB_Vorfall);
@Command([EditGotoField]; "CHK_Name");
@Command([EditInsertText]; PVB_Nachname + ", " + PVB_Vorname);
@Command([EditGotoField]; "CHK_Aenderungper");
@Command([EditInsertText]; @Text(PVB_Aenderungper));
@Command([EditGotoField]; "CHK_tmpAufgaben");
@Prompt([Ok]; "Aufgaben"; _aufgaben[n]);
@Command([EditInsertText]; _aufgaben[n]);
@Command([FileSave]);
@Command([CloseWindow]);
n := n + 1;
n <= @Elements(_bereiche)
)
1.) Ich habe das ungute Gefühl, daß diese Methode sehr unschön ist. Ich habe auch schon versucht die Felder mit @SetField zu füllen, was irgendwie nicht geklappt hat (Felder blieben einfach leer). Eine direkte Feldzuweisung (FIELD xyz := Wert) hat auch nicht geklappt (ich glaube das geht hier auch nicht).
2.) Mein Feld CHK_Aufgaben ist vom Typ Kontrollkästchen. Das konnte ich irgendwie nicht direkt füllen, also habe ich es auf "Berechnet" gesetzt, den Wert auf CHK_tmpAufgaben gesetzt und ein Hilfsfeld mit dem Namen CHK_tmpAufgaben erstellt (wird durch die Formel oben gefüllt). Das klappt auch so lange ganz ordentlich, bis ich mein temporäres Feld verberge. Danach findet er es mit dem @Command([EditInsertText]) nicht mehr.
Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt.
Achja, Script kann ich noch nicht :-:
Vielen Dank im Voraus,
Mark Reimann
Ich nochmal ;D
Ich bin zwar immer noch der Meinung, daß es unschön gelöst ist, aber es funktioniert jetzt !
Frage 2 wäre damit erledigt.
Meine Lösung ist die folgende:
Diesen Teil habe ich gelöscht:
@Command([EditGotoField]; "CHK_tmpAufgaben");
@Prompt([Ok]; "Aufgaben"; _aufgaben[n]);
@Command([EditInsertText]; _aufgaben[n]);
Dann habe ich bei QuerySave in der zu erstellenden Checkliste folgendes eingetragen:
@If(@IsNewDoc;@Success;@Return(0));
_BereichVorfall := Chk_Bereich + "#" + Chk_Vorfall;
_Aufgaben := @DbLookup ("":"NoCache" ; "":"" ; "(LUCheckHelp)"; _BereichVorfall; 2);
@SetField("CHK_tmpAufgaben"; _Aufgaben)
Bei der Erstellung der Checklisten frage ich jetzt also die Aufgaben ab, setze sie in mein Hilfsfeld und das Feld mit den Kontrollkästchen bedient sich der Daten aus meinem Hilfsfeld. Dieses kann ich jetzt auch verbergen.
Wenn aber jemand Tipps zu einer eleganteren Lösung in Formelsprach hat .... immer her damit.
Schönes Wochenende wünscht
Mark Reimann