Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: cordi am 19.07.06 - 15:23:55
-
Hallo -
ich habe ein Problem, bei dem ich überhaupt nicht weiter komme.
Folgendes: habe die Diskussions-DB (R6) als Grundlage genommen und will hier den Newsletter-Agenten anpassen. Diverses funktioniert auch sehr gut. Aber jetzt habe ich in die New-Maske (MainTopic) ein Datumsfeld (verdatum) eingefügt mit der Absicht, dass bei der Suche nur die Dokumente berücksichtigt und somit auch verschickt werden, die das heutige Datum tragen. Sinn dahinter: ich möchte ermöglichen, dass ein Veröffentlichungsdatum eingegeben werden kann. Das Datumsfeld in der Maske habe ich mit @Today vorbelegt. Das Problem nun: im Debugger sehe ich, dass er dieses Datum aus der MainTopic-Maske gar nicht ausliest und somit auch nicht mit dem errechneten heutigen Datum vergleichen kann. Irgendwie schnall ich nicht, wie ich das machen soll. Habe mal die Zeile aus dem Newsletterscript angefügt.
Ich hoffe sehr, dass mir jemand helfen kann.
Vielen Dank schon mal!
Dim whenNow As String
Dim datum As String
whenNow$ = Today()
datum = note.verdatum
totalquery = totalquery & " and (not(field form contains log, profile, Kategorien))" & " and (@contains(datum ; whenNow)"
-
Hallo,
korrigier mal die Zeile
datum = note.verdatum
in
datum = note.verdatum(0)
Rainer
-
totalquery = totalquery & " and (not(field form contains log, profile, Kategorien))" & " and (@contains(datum ; whenNow)"
Und das kann auch nix werden: whenNow bezieht sich auf eine LS-Variable, die im Kontext des QueryStrings garantiert nicht bekannt ist! Da der komplette Code fehlt, kann ich nur sagen: Da whenNow sowieso mit Today belegt wird (warum ist dann aber whenNow vom Typ String??), dann kannst Du dort auch gleich @Today einsetzen.
Meine Vermutung: Das komplette Konstrukt, mit dem Du da herumprobierst, ist unbrauchbar. Bestätigen können wir dies aber nur, wenn wir den kompletten Code kennen.
Bernhard
-
Guten Morgen Bernhard -
den Verdacht hatte ich wohl auch schon, dass das falsch ist. Die Sache mit dem String habe ich aus der Hilfe, da @contains sich ja nur auf String bezieht. Mit @Today hatte ich auch schon rumprobiert. Mein Problem - denke ich- ist, dass ich nicht weiß/finde, wie ich an den Wert von "verdatum" komme, also das Feld, mit dem verglichen wird. Das mit dem heutigen Datum ist dann eher nicht so wild. Im Initialize werden nur die Werte aus dem Profil-Doc der DB ausgelesen, die FTSearch/FormularSearch ausgeführt und der Newsletter verschickt. Ich hatte den Code nicht ganz gepostet, weil der so elendig lang ist. Aber mach ich gerne, würde mich sehr freuen, wenn Dir oder jemand anders was dazu einfällt. Merci!
(Füge nur Teile ein, das sprengt sonst den Rahmen)
Sub DoFTSearch
searchtype = "FT"
totalquery = ""
Forall n In pCategories
BuildTextList(n)
End Forall
If textlist <> "" Then
query = "field Categories contains (" & textlist & ")"
BuildTotalQuery
End If
Forall n In pAuthors
BuildTextList(n)
If textlist <> "" Then
query = "field AbbreviateFrom contains " & textlist & " Or field AltFrom contains " & textlist
BuildTotalQuery
End If
End Forall
Forall n In pStrings
BuildTextList(n)
End Forall
...(Teile weggenommen)
If textlist <> "" Then
query = "field ThreadId contains (" & textlist & ")"
BuildTotalQuery
End If
Dim whenNow As String
Dim datum As String
whenNow$ = Today()
datum = note.verdatum(0)
totalquery = totalquery & " and (not(field form contains log, profile, Kategorien))" & " and (@contains(datum ; whenNow)"
Set collection = db.UnprocessedFTSearch(totalquery, 0)
End Sub
Sub DoFormulaSearch
searchtype = "Formula"
totalquery = ""
If pCategories(0) <> "" Then
Forall n In pCategories
BuildTextList(n)
End Forall
If textlist <> "" Then
query = "(@Contains(@UpperCase(Categories); @UpperCase(" & textlist &_
")) | @AllDescendants)"
BuildTotalQuery
End If
End If
...(Teile weg)
If pThreads(0) <> "" Then
Forall n In pThreads
BuildTextList(n)
End Forall
If textlist <> "" Then
query = "@Contains(@UpperCase(ThreadId); @UpperCase(" & textlist & "))"
BuildTotalQuery
End If
End If
Dim whenNow As String
whenNow$ = Today()
Dim datum As String
datum = note.verdatum(0)
totalquery = totalquery & " & @isavailable(NewsletterSubject) & (!@Contains(Form; ""Log"" : ""Profile"" : ""Kategorien"")) & (readers = """")" & " and (@contains(datum ; whenNow)"
Set collection = db.UnprocessedSearch(totalquery, Nothing, 0)
End Sub