Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Tobi2283 am 08.06.06 - 10:17:51
-
hallo zusammen,
ich habe eine maske erstellt, welche kundendaten (name, adresse, ort, etc.) enthält. nunmehr möchte ich verhindern, dass doppelte dokumente erfasst werden.
habe auch schon eine versteckte ansicht erstellt, bei welcher in der ersten spalte nur der name angezeigt wird.
habe versucht, in der erstellten aktion "speichern u schließen" mittels dblookup mit den bereits bestehenden dokumenten den namen abzugleichen und dann abbrechen lassen, wenn der name schon vorhanden ist.
klappt aber leider nicht. kann ich sowas evtl. gar nicht mittels formelsprache umsetzen?!?
-
Hallo,
gehe ich einmal davon aus, das der User nur diese Schaltfläche benutzt, dann geht das locker mit Formelsprache.
so nach dem Muster:
@If(!@IsError(@Dblookup());@Do(dein speichern u . schliessen);@Return(@Prompt([OK];"Titel";"Fehlermeldung")))
der User kann aber STRG-S drücken, oder ESC und Speicher Ja, oder Datei-Speichern
Somit musst du auch in das QuerySave Ereigniss etwas wie das oben rein programmieren oder aber in LotusScript.
Wichtig das ganze darf natürlich nur gemacht werden, wenn @IsNewDoc und sonst nicht, denn sonst kann ein bestehendes Dokument nicht mehr geändert u. gespeichert werden.
-
Meines Erachtens reicht für die Prüfung der Name alleine (und sogar mit Vorname) nicht aus. Denn z.B. Manfred Müller gibt's wie Sand am Meer (fast).
Axel
-
danke für die schnelle Antwort.
Aber leider hat die Umsetzung der Formel in der Schaltfläche nicht das gewünschte Ergebnis. Mir wird immer der Fehlerhinweis ausgegeben
Da ich bisher keine Erfahrung mit der @IsError Formel habe, stecke ich gerade in einer Sackgasse.
Meine Formel sieht wie folgt aus:
@If(!@IsError(@DBLookUp("":"NoCache";"";"$Bestand";"Form";3));@Do(@Command([FileSave]);@Command([FileCloseWindow]));@Return(@Prompt([OK];"Fehler";"doppelt erfasst!")))
habe als Alterntive nach dem DBLookup noch ´=Name´ eingefügt.
könntest du mir hier nochmal weiterhelfen?!? danke bereits im voraus.
PS: @Axel: geb ich dir im Prinzip recht, jedoch soll die datenbank nicht alle unsere kunden enthalten, sondern nur einen kleinen teil davon, bei denen ein bestimmtes kriterium zutrifft
-
Hallo
@DBLookUp("":"NoCache";"";"$Bestand";"Form";3)
Ist die Ansicht richtig? Hier sinnvoll der Aliasname.
Du suchst nach dem Begriff Form?? Das kann doch nicht sein.
Die 3 Spalte ist die richtige?
-
für die Anzeige habe ich keinen Alias vergeben, in der ersten sortierten spalte lasse ich das feld form anzeigen, der name der maske ist ebenfalls form. in der spalte 2 lasse ich die docuniqueid anzeigen und in der spalte 3 den namen des kunden.
habe schon einmal für eine andere datenbank mit dem dblookup gearbeitet, da habe ich aber nur daten aus einer antwort in ein eltern-dokument einfügen lassen. dass war nicht so schwer, aber jetzt...
hab ich da irgendwo einen riesen denkfehler drinnen?!?
-
Ja!
@dbLookup sucht einen Begriff (in diesem Fall den Namen) in der ERSTEN Spalte, die sortiert sein muss.
Bernhard
-
Wenn du nach dem Inhalt des Feldes Form suchen willst, dann darf bei @DbLookup Form nicht in Anführungszeichen stehen. Aber ich kann mir nicht vorstellen, dass du wirklich danach suchen willst, denn im Feld Form steht der Maskenname drin und der dürfte bei diesen Dokumenten immer der gleiche sein.
Wenn du nach Namen suchen willst, dann muss, Bernhard hat es schon gesagt, der Name auch in der ersten Spalte (die sortiert oder kategorisiert sein muss) der Ansicht stehen. Außerdem musst du bei @DBLookup dann auch den Feldnamen angeben in dem der Name abgelegt ist.
Axel
-
also, ich hab gestern abend noch ein bischen mit der formel und der ansicht gespielt, jetzt hab ich den dreh raus. nochmal vielen dank an alle
PS: falls es jemanden interessiert, so sieht jetzt meine formel aus:
@If(@IsError(@DBLookup("":"NoCache";"";"$Bestand";Name;2));@Do(@Command(FileSave); @Command(FileCloseWindows));@Return(OK;"Fehler";"Kunde doppelt erfasst")))
In meiner Ansicht, die durchsucht wird, hab ich in der 2. Spalte die Formel @Error erfasst.
-
Ich befürchte, das Verfahrne geht in die Hose:
- Wo wird auf NewDoc geprüft? Wenn nicht, können bestehende Docs nicht mehr geändert werden.
- Wenn Du auf @Error in der Spalte 2 prüfst: Eigentlich kann das gar nicht funktionieren: Du bekommst @Error zurück, wenn es den Namen schon gibt, und wenn nicht, dann sowieso. Es würde vollkommen genügen, nur auf @Error zur prüfen.
- Weiters: Wenn Du als Namen "Hildebrand" eingibst und speicherst, gibt es den Namen noch nicht. Dann stellst Du fest, der Kerl schreibt sich "Hildebrandt" und änderst das. "Hildebrandt" gibt es aber schon. Würdest Du nur bei neuen Docs prüfen, dann kann man durch Änderung munter Dubletten erzeugen.
Das nur so als Hinweise. Eine Lösung mag ich jetzt nicht vorkauen, aber für konkrete Fragen stehe ich gerne zur Verfügung.
Bernhard
-
danke für den hinweis, habe die formel gestern noch so abgeändert, dass nur neue dokumente überprüft werden, was ich wegen dem 2. punkt mache weis ich noch nicht, werd mal das restliche wochenende darüber nachdenken
nochmals an alle einen herzlichen dank für die hilfe und ein schönes wochenende