Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Doc am 07.10.04 - 15:07:59
-
... wie kann man so etwas realisieren?
Habe ein Auswahlfeld (Dialogliste), nachdem jemand daraus eine Auswahl getroffen hat, soll dieser Wert aus der Dialogliste verschinden. Also beim nächsten aufruf der Maske nicht mehr zur Verfügung stehen.
Hätte da mal jemand eine Idee?
Kann man den Wert mit Replace rausziehen?
Gruss
Doc
-
@Trim (@Replace (Quellliste; DeinWert; ""))
HTH,
Bernhard
-
Hi,
baue dir ein Feld, der Inhalt dieses Feldes ist der Inhalt der Auswahldialogbox,
Wenn ausgewählt wurde mit:
@Trim(@Replace(Feld;Auswahlfeld;"")) das o.a. Feld neuberechnen lassen.
Wichtig hierbei sind folgende Parameter:
1. Das Auswahlfeld(Dialogbox) muss nach dem Feld kommen das die Inhalte trägt.
2. Im Auswahlfeld muss die Eigenschaft
Auswahl bei Dokumentaktualisierung neu berechnen
und
Bei Auswahl Feler aktualisieren.
-
Habs versucht, aber ich bekomme es funktioniert nicht.
Liste (DialogListe) der Geschäftsstellen= GS
Anzeigefeld= DispGS
Feld "DispGS" - Text/Berechnet - Wert "GS" (Anzeige der Auswahl aus GS).
Feld "GS" - Dialogliste/Bearbeitbar - (Auswahl: Inhalt GS 1000
GS 1100
....)
Wo muss den die "@Trim(@Replace(DispGS;GS;""))" Formel rein?
Verstehe ich echt nicht.
Gruss
-
Habe mal die DB mit den Felder angehangen.
Gruss
Doc
-
Das kann m.E. so nicht gehen.
1. Wenn ich aus der Auswahl einen Punkt NICHT mehr haben möchte, dann müsste ich den ja in die Auswahlliste wieder aufnehmen.
2. Die Auswahlliste ist ja wohl ein vorberechnetes Feld. Ja, wie soll ich denn da Werte raus- bzw. wieder reinnageln ??
3. Bernhard weiss wahrscheinlich wie es geht, ich stehe da z.Zt. auch relativ im Regen....
klaus
-
nächster Denkfehler:
die Dialogliste zeigt ja die Werte an, die ich ausgewählt habe. Das hat ja nix mehr mit den Werten zu tun, die ich auswählen könnte.
Also haben die ausgewählten Werte einen Haken und die nicht ausgewählten eben keinen.
Hoffe, ich hab mich da einigermassen verständlich ausgedrückt.
klaus
-
Vielleicht funktioniert das mit dem Replace nur, wenn die Auswahl aus einer versteckten Ansicht kommt.?!
Gruss
Doc
-
Die Sache ist etwas tricky, aber eigentlich doch ganz logisch:
1. Feld "VL" wie "Vorgabeliste" (das muss -von oben links nach unten rechts gesehen vor dem 2. Feld stehen !):
Text, Berechnet, Mehrwachwerte zulassen.
Formel:
@If (VL = ""; "1000" : "1100" : "1200" : "1300" : "1400" : "1500"; @Trim (@Replace (VL; AL; "")))
2. Feld "AL" wie "Auswahlliste":
Dialogliste, Bearbeitbar, Mehrfachwerte zulassen (oder auch nicht), Felder bei Schlüsselwortänderung aktualisen, Auswahl bei Dokumentaktualisierung aktualisieren.
Auswahl: Über Formel:
@Trim (@Replace (VL; AL; ""))
In der Eingabevalidierung: "" (Das heisst: Ändern sich AL, wird Dokument neu durchgerechnet, VL gekürzt und danach AL wieder geleert durch die Eingabevalidierung).
Wenn Du möchtest, das VL auch ganz geleert werden kann, musst Du Dir für das @If (VL = ""; ...) etwas anderes einfallen lassen, zum Beispiel ein Hilfsfeld - berechnet - Formel "X" ZWISCHEN den Feldern VL und AL und dann darauf prüfen.
HTH,
Bernhard
PS: Das war doch mal 'ne spannende Aufgabe ;)
-
@bernhard
Kapier ich nicht :P
Im DL werden doch die angehakten Werte + die nicht angehakten angezeigt. Was bringt mir dann das @replace ? Oder ich müsste die ausgewählten Werte wieder in ein anderes Feld reinschreiben, oder wie ? :-\ ??? :-\ ???
klaus
-
Die angehakten verschwinden, sowie in AL die Änderung bestätigt wurde:
Die Änderung in AL bewirkt eine Neuberechnung aller Felder (von oben links nach unten rechts). Die ausgewählten in AL werden in VL mittels Replace entfernt. Danach ist AL mit der Neuberechnung dran - die Eingabevalidierung leert jetzt die bereits gemachte Auswahl.
Blödsinn war aber die Auswahlformel für AL: Da reicht natürlich vollkommen: VL).
HTH,
Bernhard
-
@Bernhard
dann bau doch mal die ALK.nsf so um, dass die funzt. Ich verbiege mir schon fast die Finger ..... :-\
klaus
-
Ich habe die Verfahrensbeschreibung oben eben dahingehend geändert, dass ich das ausversehen hineingeratene "DL" gegen das eigentlich gemeinte "AL" ausgetauscht habe.
Bernhard
-
@Bernhard,
das hatte ich schon ... ;D
Trotzdem, irgendwie... siehe Bild
klaus
-
Dann hast Du nicht das "" in der Eingabevalidierung von AL, schätze ich.
Bernhard
-
Das mit dem Replace fúnktioniert jetzt, aber
1. Bei erneutem Aufruf der Maske, stehen alle Werte aus VL wieder zur Auswahl.
2. Bei eingabeval Wert= ""/ Feld AL, kommt Fehlerhinweis: Feld hat Validierungsformel nicht entsprochen.
-
@Bernhard,
nee, dann kommt die FM: "Feld hat Eingabevalidierung nicht entsprochen" :P
klaus
-
Sorry, sorry, sorry - wenn man sowas nebenher macht ... Es muss natürlich EingabeUMSETZUNG heissen und nicht -validierung.
Bernhard
-
1. Bei erneutem Aufruf der Maske, stehen alle Werte aus VL wieder zur Auswahl.
Was hast Du denn für eine Formel in VL ?
-
oh oh, jetzt steht in AL nix mehr drinne......
klaus
-
Folgende:
@If (VL = ""; "1000" : "1100" : "1200" : "1300" : "1400" : "1500"; @Trim (@Replace (VL; AL; "")))
-
Nach Wertsetzung "" in die Eingabeumsetzung von Feld AL wird der gewählte Wert nicht mehr ins Feld AL eingetragen. (Feld AL bleibt leer; Gemäß der Umsetzung)
Gruss
Doc
-
Also bei mir funktioniert's - anbei die Maske zum Vergleich.
Bernhard
-
@bernhard,
so sieht es bei mir auch aus.
Nur: ich sehe da keinen Sinn drin (wie weiter oben beschrieben). Ich wähle was aus und das Feld bleibt leer. In meinen Augen ist das Schwachsinn. Das widerspricht doch irgendwie jeglicher LoNO-Logik...
Trotzdem: DANKE !
klaus
-
Also Bernhard bei deiner DB funktioniert es so wie in meiner. Wahrscheinlich wurde
ich doch etwas missverstanden. Die Vorgabeliste soll ja bei einem erneuten aufruf
der Maske eben um den Wert aus VL gekürzt werden.
Wenn nach erneuten Aufruf der Maske wieder ALLE Werte in AL enthalten sind, bringt
mir das leider nicht viel.
Gruss
Werner
-
Wer lesen kann, ist eindeutig im Vorteil. ;D
Auf diese Macke hatte ich doch bereits viel weiter oben hingewiesen. :P :P (wenn auch vielleicht etwas umständlich beschrieben)
klaus
-
Ich kann dem jetzt nicht folgen. Wenn ich mittels Auswahl in AL einen Wert aus VL entferne, ist der wech und taucht auch nicht wieder auf. Auch bei erneutem Aufruf des Dokuments (wo sollte er auch herkommen - VL wird nur einmal gefüllt, und der Inhalt des Feldes - bereinigt durch AL - wird dann ja gespeichert.
Bernhard
-
Ja stimmt in dem Dokument selbst ist der Wert raus.
Also nochmal zum Problem: Ich möchte ein Auswahlliste haben, woraus sich User etwas auswählen. Ist dieser Wert von einem User gewählt soll er den anderen Usern die die Maske öffnen nicht mehr zur Verfügung stehen.
In diesem Fall sollen Supporter sich eine Geschäftsstelle wählen bzw. zuordnen, wenn diese Zuordnung getroffen wurde darf die Geschäftsstelle den Anderen nicht mehr zur
Verfügung stehen.
Das ist mit deiner Lösung ja nicht zu machen.
Gruss
-
Das braucht zwei Felder: eines in dem die gewählten Werte drinstehen, und ein leeres Feld, das zur Auswahl verwendet wird. Man beachte, wenn Werte bereits in einem Feld drinstehen, werden diese in die Auswahlliste mit einbezogen, egal was sonst in der Auswahlliste drinsteht.
-
Reden wir nur aneinander vorbei ?
Wenn ich eine Geschäftsstelle auswähle, kann die danach doch niemand mehr auswählen - die taucht ja nie mehr auf. In einem anderen Feld kann man die ausgewählte Geschäftsstelle ja auch noch mal speichern, man kann die Auswahlliste auch noch in einen Button packen oder oder.
Bernhard
-
Richtig, abgesehen davon, wenn die gewählte Geschäftsstelle schon im Feld drinsteht, weil man sie vorher gewählt hat, wird sie vom UI wieder mit einem Häkchen reingesetzt. Nimm mal ein Feld, in dem was drinsteht, mache das zu einer Dialogliste und lasse die Auswahl frei ... es wird der bereits eingetragene Wert als Auswahl mit Haken erscheinen, obwohl die Auswahlliste so ja eigentlich leer wäre
-
Aha, jetzt wir die Sache tricki.
Im Prinzip bräuchte man dazu ein Konfi-Dokument o.ä. , in dem die schon ausgewählten und möglichen Werte drin stehen.
Was mache ich aber wenn 2 User gleichzeit (!) ein neues Dok erstellen ? Dann können beide ja den gleichen Wert auswählen, was ja nicht möglich sein soll......
klaus
-
Jo, dann muss man was vorkehren, dass nur einer gleichzeitig neue Docs erstellen kann, und da sind wir bei einem ähnlichen Problem wie bei fortlaufenden Nummern
-
richtig erkannt.... :D ;)
-
@Bernhard
öffne doch mal die Maske "Auswahl entfernen" in deiner Db, dann findest du die Werte aus dem Feld VL doch wieder alle vor, oder nicht.
Gruss
Werner
-
Eben, deshalb muss man ja mit 2 Feldern arbeiten. Die Version mit einem Konfig-Dok ist natürlich dann interesseant, wenn man das Bearbeiten durch mehrere Leute verhindern will ... wie bei einer fortlaufenden Nummer
-
Ich sehe jetzt, wo wir uns missverstanden haben: Du willst nach erstmaliger Verwendung ein Keyword für kein neues Dokument mehr zulassen.
Wie oben von Jens und Klaus schon angedeutet wurde: Dies ist mit Notes nicht sicherzustellen: Konkurrierende Zugriffe, Arbeit auf mehreren Servern, lokale Repliken ...
Falls Du sagen kannst: Das läuft nur auf einem Server und nie lokal, kannst Du das Verfahren aber so umstellen, dass die VL in einem Setup-Dok (nicht ProfileDocument - dieses wird gecacht !) stehen und nach Verwendung dort gelöscht werden.
Bernhard
-
Danke für Eure Mühe!
Da werde ich mal nach Setup-Dok suchen, dass sagt mir jetzt leider garnichts.
Schönes WE an Alle!
-
Nun, da hast Du Dir was anspruchsvolles ausgesucht ....
-
Danke für Eure Mühe!
Da werde ich mal nach Setup-Dok suchen, dass sagt mir jetzt leider garnichts.
Schönes WE an Alle!
Da wirst du nix finden.
Ein Setup Dokument ist für eine Notesanwendung ist ein bischen wie eine Übertragung des Singleton Design Patterns auf Lotus Domino.
Ein Dokument, wo DB-globale Einstellungen notiert werden und von dem es pro Datenbank nur genau 1 gibt.
1. Erstelle 1 Notesmaske.
2. Nenne diese Notesmaske setup.
3. Speicher die Notesmaske
4. Erstelle eine Ansicht (setup) und eine Ansicht 34. Administration\01. Globales Setup mit Ansichtsformel auf form="setup"
5. Lass dir etwas kreatives einfallen, damit immer nur 1 Setup Dokument erstellt werden kann oder schreib in die Doku, dass nur 1 Setup Dokument erstellt werden soll.
6. Schreibe in die erste Spalte als Formel "setup". Mach diese Spalte sortierbar (jetzt kann das als Lookup-Key verwendet werden.
Ein Setup Dok ist also funktional sowas wie ein Profildokument. Nur hat man mit Profildokument öfters mal Ärger (Replizierung, Caching, Überblick).
Gruß Axel
-
Naja, es geht auch unkomplizierter:
In der Maske ein Feld VL, Text, multi value, computed for display.
Dies enthält die Liste der Niederlassungen.
Eine (versteckte) Ansicht GA, die aus den Dokumenten nur das Feld "Geschäftsstelle" anzeigt (sortiert).
Auswahlfeld (Dialogliste oder Optionsschaltfläche) mit der Formel:
@Trim (@Replace (VL, @dbColumn (auf Ansicht GL); ""))
So werdendie bereits verwendeten Geschäftsstellen ausgefiltert.
Wie oben schon mehrfach angesprochen: So (oder mit Setup-Dok) funktioniert das nur, wenn diese Datenbank nur und ausschliesslich auf einem Server verwendet wird. Und das schützt auch nicht davor, dass zwei Leute parallel die gleiche Geschäftsstelle auswählen können !
Im QuerySave könnte man dann nochmal checken, ob gerade parallel von jemandem die gleiche Geschäftsstelle ausgewählt wurde.
Bernhard
-
Danke Bernhard,
so werde ich es machen, es ist gewährleistet, dass es auf nur einem Server läuft. Es dient lediglich einer Rolloutplanung zum intrernen Gebrauch.
Ist aber schon erstaunlich, dass so eine anforderung so "Anspruchsvoll" sein soll. ;-)
Gruss
Werner
-
Werner, das ist der Preis dafür, dass Notes wirklich ein verteiltes System ist, da sind eben Anforderungen, die bei dem meistens noch vorherrschenden zentralen Denken sogenannte Peanuts sind, eben wirkliche Probleme.