Autor Thema: LotusScript und Formel db.search  (Gelesen 2388 mal)

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
LotusScript und Formel db.search
« am: 14.10.22 - 10:43:13 »
Hallo Forum, Guten Morgen,

Ich habe den Lotus Notes viele Beiträge gelesen, aber keine passende Lösung gefunden. Entschuldigung, falls ich zu ungeduldig bin.
In einer Datenbank möchte ich nach allen Dokumenten suchen, die der Bedingung Form = "MyForm" genügen.

Code
Dim coll as NotesDocumentCollection
Dim suchformel As String
suchformel = {Form = "MyForm"}
Set coll = thisdb.Search(suchformel, Nothing,0)

Im Debugmodus erscheint suchformel so:

Code
"Form =""MyForm"""

Das sieht schon nicht so gut aus - oder? Das Suchergebnis ist:

coll.count = 0

Dagegen ergibt z.B.:

Code
Set coll = view.GetAllDocumentsByKey("MyForm")

coll.count = 12345

In der LotusNotes-Hilfe steht in einem Beispiel (Ausschnitt):

Code
searchFormula$ = {Form = "Project" & ReminderDate = @Today}
Set collection = db.Search(searchFormula$, Nothing,0)

Gleicht das im Aufbau der Formel (die Gänsefüßchen) nicht meinem Versuch?

Ich habe es (aus purer Panik  ;)) auch so probiert:
Code
suchformel = {Form = "} &  "MyForm" & {"}

Ich bin ratlos; andererseits aber sicher, dass ich etwas übersehen haben muss.

Vielen Dank für Euren Rat.

Viele Grüße,

Nils
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 669
  • Geschlecht: Männlich
Antw:LotusScript und Formel db.search
« Antwort #1 am: 14.10.22 - 11:03:28 »
Die Methode notesDatabase.Search ist hier Case sensitiv da die angegebene Formel den Feldinhalt 1:1 mit deinem "MyForm" vergleicht.

Die Methode notesView.GetDocumentByKey ist es hingegen nicht, hier wird nur gegen den Viewindex geprüft.

Last but not least: "Form =""MyForm""" ist nur eine andere Schreibweise bei der {} durch "" ersetzt wird.

HTH
Carsten

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Antw:LotusScript und Formel db.search
« Antwort #2 am: 14.10.22 - 11:22:29 »
Hallo Carsten,

Die "{}" benutze ich schon seit Ur-Zeiten. Der "Unterschied" ist mir klar, glaube ich. Ich muss doch in der Formel den Namen der Form in Hochkommas setzen.

Und: Bei Setzen des String "suchformel" muss der ganze Inhalt doch ebenso in Hochkommas eingeschlossen werden.

Dass bei mir die Hochkommas vervielfältigt werden, habe ich als Ursache für das ungewollte Suchergebnis gesehen.

Ist meine Formel und richtig? Warum ist mein Ergebnis "0"? Was ist da falsch?

Viele Grüße,

Nils
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 669
  • Geschlecht: Männlich
Antw:LotusScript und Formel db.search
« Antwort #3 am: 14.10.22 - 11:32:40 »
Die Formel an sich ist korrekt, der Client speichert eben nur statt der Klammern {} die Anführungszeichen "".
Und damit die in der Formel zusätzlich vorhandenen Anführungszeichen die Zeichenkette nicht unterbrechen werden sie doppelt dargestellt. Das hat mit deinem Suchergebnis aber nichts zu tun.

Warum dein Suchergebnis vermutlich 0 ist habe ich dir auch beschrieben: wenn im Formfeld z.B. "MYFORM" steht, du aber nach "MyForm" suchst dann findet Search auch nichts.

Tipp:
Leg dir einfach temporär eine View an und packe die Formel zum Testen da hinein, dann siehst du ohne Debugger ob sie funktioniert.

HTH
Carsten

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Antw:LotusScript und Formel db.search
« Antwort #4 am: 14.10.22 - 12:07:36 »
Hallo Carsten,

Die doppelten Hochkomma verstehe ich jetzt. Auf die Schreibweise des Namens der Form habe ich auch geachtet. Ich probiere weiter. Ob ich ein "SELECT" einfügen muss? Ich probiere weiter.

Vorerst vielen Dank und Grüße,

Nils
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline DominoDancing

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
  • Kugel im Käfig, lsmf, hurz ...
Antw:LotusScript und Formel db.search
« Antwort #5 am: 14.10.22 - 12:11:32 »
Hallo Nils,

Carsten hat Recht, Dein Code ist erst einmal korrekt. Nein, ein SELECT ist nicht notwendig. Du solltest neben der korrekten Schreibweise der verwendeten Maske auch prüfen, ob bei Dir thisdb sauber gesetzt ist. In der Standard-Mailanwendung funktioniert dies

   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim suchformel As String
   
   Set db = session.CurrentDatabase
   suchformel = {Form = "Memo"}
   Set dc = db.Search(suchformel, Nothing,0)

fehlerfrei.

Liebe Grüße
René
... ich fühl' mich so ... Regenbogen ... ;D
... man muss die Ursache des Problems finden ... oder eine Tüte Glitzerfeenstaub ...
... Ich bin rhythm, I'm a dancer und I don't like Influenzer ...

pantelis.botsas

  • Gast
Antw:LotusScript und Formel db.search
« Antwort #6 am: 14.10.22 - 13:05:23 »
In anderen Worten ... ersetze mal in Deinem Code (Zeile 3), das hier:

Code
suchformel = {Form = "MyForm"}

durch das hier:
Code
suchformel = {@UpperCase(Form) = @UpperCase("MyForm")}

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Antw:LotusScript und Formel db.search
« Antwort #7 am: 14.10.22 - 14:58:04 »
Liebe Leute,

Ich habe die Vorschläge von René und Pantelis beachtet und angewendet. Dann fiel mir noch die kleine, aber in diesem Falle entscheidende, Bemerkung auf:
Zitat
-Du solltest ... auch prüfen, ob bei Dir thisdb sauber gesetzt ist
Und auf einmal:

 :) HURRA  :)

Aber: Gut das ich am anderen Ende der Strippe sitze. Die Datenbank mit den gesuchten Dokumenten (MyForm) ist nicht die, in welcher der Agent läuft.  Denn der Agent soll nicht in der DB laufen, welche die gesuchten Daten enthält.
Beide Datenbanken sind im Initialize des Agenten sauber definiert.
Deswegen lief ja schon alles über eine View der anderen DB:
Code
MyView.GetAllDocumentsByKey("MyForm")


Durch Renè's Tipp fiel mir auf, dass ich SEARCH auf die falsche Datenbank angewendet hatte.  :-:

"Blinder Eifer schadet nur..." oder so etwa.

Kaum macht man es richtig, schon funktionierts.

Vielen Dank dafür, dass Ihr mich aus meiner Umnachtung gerissen habt.  :)

Viele Grüße,

Nils


« Letzte Änderung: 14.10.22 - 16:11:55 von aoibhneach »
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz