Das Notes Forum

HCL Notes / Domino / Diverses => Entwicklung => Thema gestartet von: Schnubbel am 12.02.25 - 08:52:45

Titel: db.search Formel mit @Ismember geht das?
Beitrag von: Schnubbel am 12.02.25 - 08:52:45
Guten Morgen,
ich habe Dokumente in denen es ein Feld "Links" gibt. Dort stehen Hyperlinks drin.

Ich suche per Formel nach diesen Links:

Code
Formel = {Form='Verzeichnis' & @Ismember('} & AktuellerLinkF & {';links)}
Set SuchWortdc = localdb.Search(Formel,Nothing,0)

Die Variable AktuellerLinkF enthält wirklich den Link.
AktuellerLinkF steht auch als Mehrfachwert in mindestens einem Dokument im Feld "links".

Gefunden wird er aber nicht. Die Collection ist bei 0.

Suche in den Link über die Suche in einer Ansicht wirds gefunden.

Ich brauch also mal wieder einen Zaunpfahl mit der richtigen Richtung.

Danke und LG

Thorsten



Titel: Antw:db.search Formel mit @Ismember geht das?
Beitrag von: Christian Kröll am 12.02.25 - 10:32:31
das Feld AktuellerLinkF steht in Anführungszeichen. Nimm die mal weg
Titel: Antw:db.search Formel mit @Ismember geht das?
Beitrag von: Werner Götz am 13.02.25 - 08:43:43
Das hat nicht mit den Anführungszeichen und auch nicht mit @IsMember zu tun.
Die Formel wird ja gegen alle Dokumente ausgeführt und die kennen ja AktuellerLinkF nicht.
Man müsste wohl eher das Feld links ebenfalls zu Text machen.
Ich würde es mal mit
Code
Formel = |Form = "Verzeichnis" & @Text(links) = "| & doc.GetItemValue("AktuellerLinkF")(0) & |"|
Set SuchWortdc = localdb.Search(Formel, Nothing, 0)

doc wäre hierbei das Dokument, dessen Feld AktuellerLinkF in anderen Dokumenten gesucht werden soll.
@IsMember ist nicht nötig, da der Gleichheitsoperator bei der Konstellation "Liste gegen  einzelnen Wert" das selbe macht.


Viel Erfolg!
-Werner
Titel: Antw:db.search Formel mit @Ismember geht das?
Beitrag von: Christian Kröll am 13.02.25 - 10:27:45
Werner, ich stimme zu und wiederspreche: Ich habe in einer Testdatenbank zufälligerweise auch ein paar Dokumente mit Mehrfachwerten. Mit dieser Aktion finde ich genau das eine Dokument, dass im Feld "Werte" unter anderem "Drei" enthält. AktuellerLinkF hat Thorsten als Variable benannt, nicht als Feld.
Die Anführungszeichen (doppelt oder einfach egal) sind es tatsächlich nicht.
   
Code
Dim s As New NotesSession
	Dim db As NotesDatabase
	Set db = s.CurrentDatabase
	Dim coll As NotesDocumentCollection
	Dim AktuellerLinkF As String
	AktuellerLinkF = "Drei"
	makro$ = {Form="Mehrfachwerte" & @Ismember('} & AktuellerLinkF & {';Werte)}
	Set coll = db.Search(makro$,Nothing,0)
	Msgbox Cstr(coll.Count)

Nachdem der Code funktioniert, könnten die Links vielleicht doch unterschiedlich sein? Mal Trim und Lowercase nutzen? Das ist aber reine Raterei  :-:
Titel: Antw:db.search Formel mit @Ismember geht das?
Beitrag von: jBubbleBoy am 13.02.25 - 12:56:57
Wenn der Link einen Backslash enthält, muss dieser noch für den Formelaufruf mit Replace(AktuellerLinkF,"\","\\") angepasst werden.
Titel: Antw:db.search Formel mit @Ismember geht das?
Beitrag von: Werner Götz am 13.02.25 - 13:30:26
Ok, ich hatte links und AktuellerLinkF so interpretiert, dass das DocLinks sind also was in der Art "AB012345678901234567890123456789", darum auch das @Text() drum rum.
In diesem Fall muss man sich nicht ums Maskieren kümmern.

@Christian
Wo genau Dein Widerspruch liegt kann ich nicht erkennen?!?

Viele Grüße
-Werner