notescollection ist leer?

  • Hallo, ich möchte eine notescollection machen mit allen Dokumenten,
    die die Form="QAB" haben und dnach noch einigen anderen Kriterien entsprechen.


    Beim Abfahren des Scriptes im Debugger bleibt aber die notescollection leer...


    Woran liegt das?


    hier ist der Code


    schnipp---------------------------------------------------


    Sub Initialize
    Dim session As New NotesSession
    Dim current As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim mailbox As New NotesDatabase("","")
    Dim maildoc As NotesDocument
    Dim sendto, subject, sendas, message As String

    searchFormula$ = {Form = "QAB" }

    Set current = session.CurrentDatabase
    Set collection = current.Search(searchFormular$, Nothing, 0)
    Set doc = collection.GetFirstDocument()


    schnapp------------------------------------------------------

  • Hi,


    Ist es nur ein Schreibfehler hier im Forum oder sieht der Code genauso aus.


    Code
    [b]searchFormula$[/b] = {Form = "QAB" }
    
    
    Set current = session.CurrentDatabase
    Set collection = current.Search([b]searchFormula[/b][b][color=FF0000]r[/color][/b]$, Nothing, 0)


    Andreas

  • OK.....Mist schreibfehler.....jetzt klappt es mit dieser Collection


    Zusätzlich möchte ich noch eine Bedingung einbinden,
    nämlich alle Dokumente die älter als 90 Tage sind.


    dazu dachte ich das ich folgenden code einfüge --->



    searchFormula$ = {Form = "QAB" }

    Set current = session.CurrentDatabase
    Set collection = current.Search(searchFormula$, Nothing, 0)
    Set doc = collection.GetFirstDocument()
    ' get handle to mail.box on the users current mail server
    Call mailbox.Open( current.server, "mail.box" )

    While Not(doc Is Nothing)



    If( (Today()-doc.GetItemValue("CreatedOn"))/86400 >90) Then ............




    in einer @formel in einer View funktioniert das tadellos, das er die Dokumente erkennt die grösser als 90 tage sind und diese dann kennzeichnet. Hier macht er mir einen "Type mismatch"

  • ok...90 tage von today ist nicht das problem sondern der Zugriff auf das Feld "CreatedOn" das Lotus anscheinend nicht erkennen will.


    In dem besagten Dokument gibt es ein Feld das heisst "CreatedOn" und ist vom Typ "Zeit/Datum"


    das will er mir anscheinend nicht anfassen und ich kann es nicht weiterverarbeiten

  • Wie man in der Hilfe sehen kann liefet doc.getitemvalue ein Array zurueck. Dementsprechend wuerde ich versuchen den Wert mit doc.getItemValue("CraetedOn")(0) zu holen.

  • wie muss denn nun die searchformula aussehen?


    der erste Teil steht ja so in der Hilfe drin und das funktioniert auch


    beim zweiten Teil bin ich mir nicht sicher


    searchFormula$ = {Form = "QAB" & CreatedOn < today-90}


    führt jedenfalls zu einer leeren collection


    searchFormula$ = {Form = "QAB" & CreatedOn < today()-90}


    führt zu einem formelfehler
    darf ich keine Berechung in der Searchformula machen?

  • Schreib doch mal den Code hier rein. Ist bei dem Objekt doc denn ueberhaupt ein Feld mit dem Namen enthalten??
    Benutze bitte den Debugger. Da musst Du das doch sehen.

  • ... mit der Methode db.search kannst Du doch ein Cutoff-Datum übergeben...


    notesDatabase.Search( formula$, notesDateTime, maxDocs% )


    Du deklarierst Dir vorher ein neues NotesDate und füllst es mit deinem Datumswert aus der Maske. Dann ziehst Du die 90 Tage ab und übergibst es als Argument.

    [size=x-small]
    Computer sind da um zu rechnen!
    Nicht um Ausreden wie: "Ich kann nicht durch Null teilen!", auf den Bildschirm zu schreiben.
    [/size]

  • hier ist der code den ich schon teilweise oben gepostet habe



    Sub Initialize
    Dim session As New NotesSession
    Dim current As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim mailbox As New NotesDatabase("","")
    Dim maildoc As NotesDocument
    Dim sendto, subject, sendas, message As String

    searchFormula$ = {Form = "QAB" & CreatedOn < today()-90}

    Set current = session.CurrentDatabase
    Set collection = current.Search(searchFormula$, Nothing, 0)
    Set doc = collection.GetFirstDocument()
    ' get handle to mail.box on the users current mail server
    Call mailbox.Open( current.server, "mail.box" )

    While Not(doc Is Nothing)

    ' Jetzt Message zum testen für die gefundenen Dokumente
    ' später hier mailsenden
    subject = "[QAB] " + doc.GetItemValue("QABNummer")
    Messagebox("Test" + subject)

    Set doc = collection.GetNextDocument(doc)
    Wend
    End Sub

  • Ich glaube, ich hatte einen Dreher drin. Versuch mal das hier:


    searchFormular$ = {Form = "Haupt" & CreatedOn >[} & Today-30 & |]|

  • Set collection = db.search ("(Form = 'Haupt') & @Adjust (CreatedOn; 0; 0; 90; 0; 0; 0) < @Today", Nothing, 0)

    IBM Certified Advanced Application Developer - Lotus Notes and Domino 6/6.5...............

  • danke euch allen , nach einigem hin und her hab ich es jetzt im nachhinein gelöst:


    searchFormula$ = {Form = "QAB" }

    Set current = session.CurrentDatabase
    Set collection = current.Search(searchFormula$, Nothing, 0)
    Set doc = collection.GetFirstDocument()
    ' get handle to mail.box on the users current mail server
    Call mailbox.Open( current.server, "mail.box" )

    While Not(doc Is Nothing)
    wann =doc.GetItemValue("CreatedOn")(0)
    If wann < Today()-90 Then..........................




    werde aber beim nächsten mal sicherlich auf eine eurer searchlösungen zurückgreifen......

  • Dann brauchst Du eigentlich auch gar nicht zu suchen.

    Code
    While Not(doc Is Nothing)
    wann =doc.GetItemValue("CreatedOn")(0)
    If Form(0) = "QAB" Then
    If wann < Today()-90 Then..........................


    damit laeufst Du ueber alle Dokumente und entscheidest dann :D