Autor Thema: Dialogliste vorbelegen  (Gelesen 1771 mal)

Offline Dlawedor

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Dialogliste vorbelegen
« am: 27.10.11 - 07:41:13 »
Guten morgen,

als Neuling in der Notes-Entwicklung suche ich schon seit einer Weile nach einer Formel-Lösung zu folgendem Problem:

Wie kann ich das Feld "umfTeilprozess" mit den bereits zugeordneten Werten in Abhängigkeit des Wertes im Feld "umfProzess" vorbelegen und gleichzeitig auch eine Dialogliste mit weiteren Einträgen anbieten?


- Zuordnungsmaske mit 2 Feldern:
   Optionen: "Felder automatisch aktualisieren" gehakt

   1. Feld (umfProzess): Exklusive Auswahl eines Prozesses aus der Liste aller Prozesse
      Optionen: "Felder bei Schlüsselwortänderung aktualisieren" gehakt

   2. Feld (umfTeilProzess): Mehrfachauswahl der Teilprozesse, die dem Prozess in Feld "umfProzess" zugeordnet werden sollen.
      Optionen: "Auswahl bei Dokumentaktualisierung aktualisieren" gehakt

Weitere Dokumente:

- Konfigurationsdokument mit 2 Feldern:
   1. Feld: Alle im Haus denkbaren Prozesse
   2. Feld: Alle im Haus denkbaren Teilprozesse
   Aus dem Inhalt dieser beiden Felder werden die Dialoglisten für die beiden Felder (Zuordnungsmaske) erstellt, dabei werden zwei Ansichten zuProzessLkUp und zuTeilProzessLkUp verwendet.

- Ansicht (umfTeilProzessLkUp) mit 2 Spalten:
   1. Spalte: Prozess
   2. Spalte: Teilprozess
   Der Inhalt dieser Ansicht resultiert aus den Inhalten bereits erstellter Zuordnungsdokumente (Basis: Zuordnungsmaske)
  

Beispiel:
Aus der Dialogliste zum Feld "umfProzess" wird "Rechnungswesen" ausgewählt. Dann sollten im Feld "umfTeilprozess" die beiden bereits zugeordneten Teilprozesse Finanzbuchhaltung und Kassenbuch eingetragen werden.
Die Dialogliste des Feldes "umfTeilProzess" soll aber auch weiterhin alle Teilprozesse beinhalten; es könnte ja sein, es wurde bei der ersten Zuordnung ein Teilprozess vergessen, oder ein neuer ist hinzugekommen.

Mein Versuch, dieses über "Vorgabewert":
Code
_auswahl:=@DbLookup("":"NoCache";"":"";"(umfTeilProzessLkUp)";umfProzess;2);
@If(@IsError(_auswahl);"";@Sort(@Unique(_auswahl)));

zu erreichen, musste, wie mir inzwischen klarwurde, kläglich scheitern; zu dem Zeitpunkt existiert noch kein Wert für "umfProzess".

Auch eine Erweiterung der Auswahlformel, die standardmäßig die Dialogliste mit allen Teilprozessen erzeugt (_liste), um die _auswahl klappt nicht:
Code
_liste:=@DbColumn("":"NoCache";"":"";"(zuTeilProzessLkUp)";1);
@If(@IsError(_liste);"";@Sort(@Unique(_liste)))
_auswahl:=@DbLookup("":"NoCache";"":"";"(umfTeilProzessLkUp)";umfProzess;2);
@If(@IsError(_auswahl);"";@Sort(@Unique(_auswahl)));
_alle := _liste : _auswahl
Es erscheint nur eine Dialogliste mit den beiden zugeordneten Einträgen zum Rechnungswesen.

Ich würde es ja auch im "Entering" einbauen, aber dort geht ja nur Script und das ist nicht so ganz mein Metier. Gibt es vielleicht doch eine Lösung in Formel?

Vielen Dank schon mal.
« Letzte Änderung: 28.10.11 - 08:44:49 von Dlawedor »
Viele Grüße

Udo
---------------------------------------------------------------------------------
Notes-Client 8.5.2

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Dialogliste vorbelegen
« Antwort #1 am: 27.10.11 - 08:14:08 »
Moin,

ist die Ansicht umfTeilProzessLkUp kategorisiert ?

Außerdem kannst Du mit @if(umfProzess="";@return("");.....) abfangen, dass der weitere Code läuft, solange umfProzess leer ist. Dann noch ein HideWhen auf das Feld umfTeilProzess [umfProzess=""] und schon ist das zweite Feld erst sichtbar, wenn es etwas auszuwählen gibt.

CU,
Axel

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Dialogliste vorbelegen
« Antwort #2 am: 27.10.11 - 08:33:03 »
... du kannst in der Formel zur Liste in umfTeilProzess auch @SetField verwenden, der in Abhängigkeit zum umfProzess sich selbst setzt. Aber Vorsichtig - die Werte sind dann nach jeder Aktualisierung wieder drin. Ansonsten musst du im PostRecalc entsprechend agieren...

Toni
Grüßle Toni :)

Offline Dlawedor

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Re: Dialogliste vorbelegen
« Antwort #3 am: 27.10.11 - 12:30:04 »
Moin,

ist die Ansicht umfTeilProzessLkUp kategorisiert ?

Außerdem kannst Du mit @if(umfProzess="";@return("");.....) abfangen, dass der weitere Code läuft, solange umfProzess leer ist. Dann noch ein HideWhen auf das Feld umfTeilProzess [umfProzess=""] und schon ist das zweite Feld erst sichtbar, wenn es etwas auszuwählen gibt.

CU,
Axel
Hallo Axel,

vielen Dank für die Antwort.

Die Ansicht umfTeilProzessLkUp ist nicht kategorisiert; sollte sie es sein? - Auch damit habe ich es mittlerweile versucht.  :(

Das mit dem "@return" leutet mir ein, aber funktioniert das auch im Vorgabewert?
Die Formel für "Vorgabewert" zum Feld umfTeilProzess sieht jetzt so aus:
Code
@if(umfProzess="";
	@return("");	
	@Do(_auswahl:=@DbLookup("":"NoCache";
				"":"";"(umfTeilProzessLkUp)";umfProzess;2);
				@If(@IsError(_auswahl);
						"";
						@Sort(@Unique(_auswahl))
					)
		)
	);

Aber damit ändert sich leider auch nichts.

Zu den Tipps von Toni bin ich noch nicht gekommen; danke auch Dir.
Viele Grüße

Udo
---------------------------------------------------------------------------------
Notes-Client 8.5.2

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Dialogliste vorbelegen
« Antwort #4 am: 27.10.11 - 13:25:38 »
Der Vorgabewert wird nur bei einem neuen Dokument gesetzt, bestehende Dokumente werden durch Ändern des Vorgabewertes nicht verändert.

mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline Dlawedor

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Re: Dialogliste vorbelegen
« Antwort #5 am: 28.10.11 - 08:43:49 »
Guten morgen,

vielen Dank nochmals an alle, die geantwortet haben.
Letztlich ist es eine Mischung aus den Antworten von Toni und Axel geworden:
Code
REM {Feldwert von umfTeilProzess setzen};
@If(umfProzess="";
	@Return("");
	@Do(_auswahl:=@DbLookup("":"NoCache";
   				"":"";"(umfTeilProzessLkUp)";umfProzess;2);
			@If(@IsError(_auswahl);
					"";
					_auswahl:=@Sort(@Unique(_auswahl))
				);
			_akt := @GetField("umfTeilProzess");
			_akt := @Sort(@Unique(_akt));
			@If(_akt = "";
					@SetField("umfTeilProzess"; _auswahl);
					@SetField("umfTeilProzess"; _akt)
				)
		)
	)

Das steht jetzt in der PostRecalc und funktioniert so, wie es soll.  ;)

Allen noch einen angenehmen Tag und ein schönes (langes?) Wochenende.
Viele Grüße

Udo
---------------------------------------------------------------------------------
Notes-Client 8.5.2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz