Autor Thema: Existenz eines Dokuments mit "@DbLookup" prüfen?  (Gelesen 1956 mal)

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Hallo NG,

ich möchte wissen, ob es in einer Datenbank bereits ein Dokument mit einem bestimmten Wert gibt.
Gibt es das Dokument, so soll es im Editiermodus geöffnet werden, gibt es das Dokument noch nicht, so soll es mit einer bestimmten Maske erstellt werden.

Ich versuche mich wie folgt dem Problem zu nähern:

Bei Betätigung eines Buttons wird folgende Formel ausgeführt.

_DOC := @DbLookup("":"NoCache";"":"datenbank.nsf";"Standard";5;2);

@Prompt([Ok];"Ergebnis";_DOC);

Bei Betätigung eines Buttons soll also ein Fenster geöffnet werden welches mir den Spaltenwert von Spalte 2 des Dokuments mit dem Spaltenwert 5 in der ersten sortiertbaren Spalte der Ansicht "Standard" liefert.

Dieses Fenster ist jetzt lediglich zum spielen/prüfen und wird später wieder verschwinden wenn ich schlüssig auswerten kann ob das Dokument nun existiert oder nicht.

Was mir aufgefallen ist:
Wenn ich den Schlüssel auf einen Wert setze, der Wahr ist (ein Dokument mit "5" ist vorhanden...) dann erhalte ich ein Fenster - allerdings ohne Inhalt. Müsste ich doch eigentlich mit Inhalt bekommen - oder?
Wenn ich den Schlüssel auf einen Wert setze, der Unwahr ist (ein Dokument mit "10" ist nicht vorhanden...)  dann erhalte ich kein Fenster.

Was mache ich falsch?
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Existenz eines Dokuments mit "@DbLookup" prüfen?
« Antwort #1 am: 25.02.07 - 16:01:49 »
Was mit aufgefallen ist: In Deinem @dbLookup suchst Du nach 5, schreibst aber später, dass es ein Dokument mit dem Wert "5" gibt. Also einmal Zahl, einmal String.

_DOC ist ein schlechter Variablenname (falls jemand mal später Deinen Code pflegen muss) - Du bekommst ja einen Wert zurück.

Frage: Kann @Prompt überhaupt den erwarteten Wert ausgeben? @Prompt kann nur mit skalaren Strings!

Wegen der Nichtausgabe der Messagebox: Ein Nicht-Treffer gibt @Error zurück. Damit kommt @Prompt nicht klar.

Wegen Deinem generellen Ziel: Wenn Du bei einem Treffer das Dokument öffnen willst, müsste Dein @dbLookup-Rückgabewert die UniversalID - @Text (@DocumentUniqueID) - zurückgeben. Und Du musst vorab prüfen:
- Gibt es keinen Treffer?
- Gibt es mehr als einen Treffer?

HTH,
Bernhard

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Existenz eines Dokuments mit "@DbLookup" prüfen?
« Antwort #2 am: 25.02.07 - 16:45:47 »
Hallo Bernhard,

ich bin ratlos. Ich fummele an diesem Mist seit heute morgen um 10:00 Uhr rum und komme kein Stück weiter.

Es soll für jede Kalenderwoche jeweils 1 Dokument erstellt werden. D.h. es gibt (am Jahresende) 56 Dokumente.
Bei Betätigung des Buttons soll geprüft werden, ob für die aktuelle Kalenderwoche bereits ein Eintrag vorliegt. Es sind also nur folgende Ergebnisse möglich:

aktuelle Kalenderwoche vorhanden =  Dokument öffnen
aktuelle Kalenderwoche nicht vorhanden = Dokument erstellen

Bisher habe ich das immer wie folgt gemacht:
@Command([OpenView]; "Standard";_KW);
@Command([EditDocument];1)

Das klappte auch soweit ganz gut - war die aktuelle Kalenderwoche nicht vorhanden wurde die vergangene Kalenderwoche angezeigt. Immer am Wochenanfang muss ich dann also manuell ein neues Dokument erstellen und abspeichern. Und das will ich etwas komfortabler gestalten.

@Prompt([OK];Datentyp;_KW); zeigt mir (jetzt beim Bastlen) die jeweils aktuelle Kalenderwoche an.

Die 5 hatte ich eingetragen um einen Fehler in Variable "_KW" auszuschließen bzw. um die Kalenderwoche zu simulieren. Der Eintrag wurde als Zahl vorgenommen.

Mein Gedankengang war nach Erhalt der Variable "_DOC" (wird noch geändert) ein @IF-Statement zu basteln welches dann jeweils verzweigt.

Ist mein ganzer Ansatz murks oder wo habe ich das Brett vor'm Kopp???
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Existenz eines Dokuments mit "@DbLookup" prüfen?
« Antwort #3 am: 25.02.07 - 16:54:39 »
Hallo Jens,

schreib mal ein bisschen mehr zu Deinen Intentionen: Was soll die DB letztendlich machen? Erst dann kann man den Ansatz beurteilen.
Beispiel: "Ich klicke auf eienn Button, um ... zu machen. Wenn das Dokument für die KW (wie ermittelt?) noch nicht vorhanden ist, dann soll ein neues Dokument erstellt werden, um ...".

Bernhard

PS: Welchen Kalender verwendest Du eigentlich? Alle alternativen Kalender, die ich kenne, haben weniger als 52 / 53 Wochen, Deiner aber 56  ;)

PPS: Kommt LotusScript in Frage?

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Existenz eines Dokuments mit "@DbLookup" prüfen?
« Antwort #4 am: 25.02.07 - 17:03:51 »
Hallo Bernhard,

ich möchte eine Datenbank erstellen mit der ich bestimmte Projekte zeitlich festhalten kann - ein Stempeluhr für Projekte und Aufgaben gewissermassen.
Die aktuelle Kalenderwoche wird über eine Formel errechnet. Und natürlich hat das Kalenderjahr nur 52 Wochen - und nicht 56....

An der Datenbank bastele ich schon seit ca. einem Jahr rum und habe sie auch produktiv im Einsatz - allerdings nur für mich - nicht für meine Kollegen.
In einem Navigator habe ich 2 Buttons. Einer macht mir eine Ansicht mit einer Übersicht auf. Der andere macht mir (bisher) das zur aktuellen Kalenderwoche gehörende Dokument auf - sofern es denn existiert.
Hier möchte ich nun endlich mal eine saubere Lösung basteln und nicht immer manuell die Maske aufrufen um ein Dokument für die aktuelle Kalenderwoche zu erzeugen wenn noch keines vorhanden ist.

LS kommt nur recht begrenzt Frage. Da ich als Admin kaum zum Programmieren komme vergesse ich stets das mühsam erlernte in kürzester Zeit :-(((
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Existenz eines Dokuments mit "@DbLookup" prüfen?
« Antwort #5 am: 25.02.07 - 17:10:38 »
Also eine Zeiterfassung ... Ich halte es (als darin erfahrenener Programmierer) aber für sehr fraglich, dies über Dokumente per KW zu realisieren. Den Fehler, den Du derzeit noch machst, würden wir bestimmt finden. Aber das Grundprinzip ist aus meiner Sicht sehr, sehr fraglich:
- Keine Auswertung per Projekt möglich (nur über "Umwege" ...)
- keine Überprüfung der täglichen Arbeitszeit (nur über "Umwege" ...)
- ... ich glaube, meine Liste könnte jetzt sehr lang werden.

Bernhard

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Existenz eines Dokuments mit "@DbLookup" prüfen?
« Antwort #6 am: 25.02.07 - 17:29:40 »
Nun ja, ich betrachte das ganze auch als Lehrgeld mit angenehmen Nebeneffekt der Nutzung.
Unabhängig ob die Basisarchitektur daneben ist, so hätte ich doch aber sicherlich das gleiche Problem wenn ich für jeden Tag ein Dokument erstellen würde. Auch hier müsste ich prüfen ob es schon vorhanden ist.

Während ich hier so grübele kommt mir die Idee, ob es vielleicht nicht sogar am pfiffigsten ist einmal per Agent alle Dokument im Voraus zu generieren und dann lediglich mit Leben zu füllen....
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Geschafft!
« Antwort #7 am: 25.02.07 - 20:35:49 »
Hallo Bernard,

vielen Dank für den Hinweis auf "@Error".
Damit hab ich's jetzt hingekriegt  :D

_Check := @DbLookup("":"NoCache";"":"datenbank.nsf";"Standard";_KW;1);
@If(@IsError(_Check);_Fehler := "Das Dokument ist nicht vorhanden!";_Fehler := "Das Dokument ist vorhanden!");
@Prompt([Ok];Title;_Fehler);

Darauf kann ich jetzt aufbauen und weitermachen.
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz