Domino 9 und frühere Versionen > ND8: Entwicklung
@If + @ Contains
Christian Kröll:
@Peter Mewes:
Ich pflichte Stefan bei: Die Eingaben der Anwender sind einfach nicht vorhersehbar und kaum abzufangen. Wir pflegen in einer Anwendung ca. 30.000 Kundendaten und bislang scheiterte jeder Versuch, Doppelanlagen zu vermeiden. Zwei Ansätze haben die Situation stark verbessert:
1. Anwender in den Suchfunktionen intensiv schulen. Selbst langjährigen Anwendern kann man da immer Neues zeigen
2. Eigene Suchmasken: Mit Postleitzahl und dem Anfang der Strasse verengt sich eine Auswahl so stark, dass die Mitarbeiter nur noch eine kurze Auswahl möglicher bestehender Kunden/Ansprechpartner zur Auswahl bekommen. Wenn da der neue Partner nicht gefunden wird, dann wird er angelegt.
Kleiner Trost: Auch die Post vertreibt eine Software, um Massenmailings vorbereiten zu können (Infopost-Manager). Die Doublettenprüfung dort ist auch nicht das "Gelbe" (nun auch noch Kalauer in diesem Thread).
Wer immer die Idee hatte, dass Du so eine Doublettenprüfung versuchen solltest, hat Dich in die Irre geführt und uns - Dank Deiner lobenswerten Hartnäckigkeit - einen amüsanten Thread beschert.
Vielleicht haust Du nun aber mal in Dein erstes Posting den "Daumen hoch" rein?
Peter Mewes:
Hallo Cebolina, Hallo Glombi.
Das Problem mit der lokalen oder Serverseitigen-Geschichte schiebe ich schon seit Anfang an vor
mir her. Imom ist alles noch lokal. Zum testen ausreichend. Weil ich aber die Tage mit Autoren / Leser-Feldern und allgemein der ACL arbeiten will, wird das Programm vermutlich "aus Jux" in unserer DEV-Umgebung repliziert werden.
@Soundex ist mir neu. Scheint sinnvoll - weiß nur noch nicht direkt wofür. Setze ich hinten auf die Liste. Inwiefern hilft mir Soundex letztlich dabei "Rainer" von "Reiner" zu unterscheiden, bzw. inwiefern will ich das? Rainer und Reiner sind für mich 2 verschiedene Personen. :P
--- Zitat --- Wobei ich das Thema SaveOptions hier heraushalten würde, weil es mit diesem Anliegen von Peter nix zu tun hat (es sei denn, man will die Sache verkomplizieren).
--- Ende Zitat ---
Leider ist die SaveOption bzw allgemein das verhindern von Speichern genau der Punkt, wo ich grad ankomme. ;)
--- Zitat ---Zum Thema Saveoptions: Anstatt das auf "1" oder 1 zu setzen, solltest Du das auf @Unavailable oder "" setzen.
--- Ende Zitat ---
Hatte ich am Anfang so. Hatte den Code aus dem Post, auf den du grad verwiesen hast, abgekupfert. Als er aber mit Unavaible nicht ging, in der Hilfe stand, dass Unavaible = Deletefield ist und ich nicht wusste, was der Defaultwert von SaveOptions ist, habe ich es mit "1" und 1 probiert. Wie interpretiert Notes den Sachverhalt wenn ich den Wert auf "" setze? Als "SaveOptions 0?
Bin grad' dabei mir zu überlegen, wie ich das ganze sinnvoller aufbauen kann. Ich möchte ja den Leuten mit der Feldvalidierungskritik entgegen kommen. Das einzige was mir da aber grad einfällt wäre, die Formel als Eingabevalidierung für die Felder Name, Vorname, Straße zu nehmen und eine Variable mit "1" / "0" zu erzeugen, die dann im Querysave via LS ein continue = false triggert - oder auch nicht.
Habe bei der unten geposteten Variante aber immernoch Verständnisprobleme, da die Formel zwar geht, um zu prüfen ob Profile doppelt existieren, aber sobald ich die selbe Formel nehme um den "saver" auf 1 oder 0 zu setzen, versagt sie. Laut einem Ausgabe Prompt zumindest, da der Saver immer auf "" bleibt und die SaveOptions auf "", egal ob Profil doppelt existiert oder nicht. Wäre nett wenn das jemand enträtseln könnte. Randinfo: Auf der Maske befindet sich ein Feld SaveOptions. Wert: "". Ist der Wert bspw. "1", dann gibt der Prompt am Ende diesen Wert aus. Ergo: Weder der Zugriff auf die saver-Variable, noch auf die SaveOptions via SetField ziehen. Syntax-, oder Denkfehler?
saver :=saver;
viw := "vadminview";
crit := (_vorname + "#" +_name + "#" + _straße);
col := 2;
lkp := @DbLookup( "" : "NoCache" ; "" ; viw ; crit ; col );
res := @If( @IsError( lkp ) ; "" ; lkp );
@If( res != @Text( @DocumentUniqueID ) & res != "" ; @Prompt([Ok];"¿Profil bereits vorhanden"; "Das Profil ist bereits vorhanden. Eine Nachricht wurde an den zuständigen Admin versendet. Er wird sich in Kürze mit Ihnen in Verbindung setzen. NICHT Unique.") ; @Prompt([Ok];"Profil erstellt"; "Das Profil wurde gespeichert.") );
@If( res != @Text( @DocumentUniqueID ) & res != "" ; @SetField (saver ; "1"); @SetField (saver ; "0" ));
@If ( saver = "0" ;@SetField( SaveOptions ; "0") ; @SetField ( SaveOptions ; "1"));
@Prompt([ok]; Blah ; "Hallo, der Saver ist auf " + saver + " . Die SaveOption ist auf " + SaveOptions +". ")
Ps.: Ich habe in der Hilfe nichts zum Thema @DaumenHoch gefunden!!!
Pps.: Ich würd nen Daumen hoch geben, auch zwei, aber ich finde den Daumen wirklich nicht. ^^;
koehlerbv:
Wirklich allerletzter Versuch: Du sollst Deinen Code in die Eingabevalidierung packen und mit @Failure arbeiten!
Bernhard
Peter Klett:
Deine Formel habe ich mir nicht genauer angeschaut, da kriege ich Augenkrebs (wg. der Farbe), habe nur soviel gesehen, dass ich mich wundere, wozu Du ein Feld saver ins Dokument schreibst, anhand dessen Du SaveOptions setzt.
Wenn Du sowieso im QuerySave mit Script arbeiten willst, warum machst Du dann nicht gleich Deine Abfrage in Script (hatte das bisher ausgeschlossen, damit Du nicht an zu vielen Hochzeiten gleichzeitig tanzt)?
Zum Thema Eindeutigkeit: Vorname, Name und Straße sind (unabhängig von der Problematik mit der Replikation) natürlich keine eindeutigen Schlüssel. Paul Meier in der Haupstraße 1 gibt es sicherlich nicht nur einmal in Deutschland. EMailadresse ist da schon eindeutiger, aber das ist nur ein logisches Thema und hat nichts mit der von Dir zu erlernenden Technik zu tun.
Zum Thema Leserfelder: Wenn Du die Dokumente mit Leserfeldern versiehst, erfolgt die Prüfung auf Eindeutigkeit nur gegen die Dokumente, die der Benutzer lesen darf, außer Du lässt diese Prüfung per agent.RunOnServer von einem höher berechtigten User ausführen, aber dann kommst Du thematisch noch tiefer, das wird Deinen Blick auf die m.E. viel wichtigeren Basics noch mehr stören.
koehlerbv:
Ad @SetField (saver ...):
Was steht denn in der Variablen saver drin? Nix? Na, dann sollte alles klar sein ...
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln