Fehler bei Suche in Datenbank

  • Das wollte ich ja, aber ich kriege das nicht hin, oder ich gucke an der Falschen stelle.
    Letzte Woche wurde endlich eine Anschicht erstellt in der alle Geräte enthalten sind (ohne die Antwortdokumente)
    ich versuche es gerade mal über diese Ansicht, aber da hänge ich auch schon wieder





    eigentlich müssten die Antwortdokumente doch im Feld "FORM" gekennzeichnet sein, was bei mir leider nicht der Fall ist.
    (Wenn ich mich irre: gibts den Befehl auch für LotusSkript??

  • Nein, im feld Form sind Antwortdokumente nicht gekennzeichnet, sondern nur durch das Vorhandensein eines Feldes $REF.
    Aber dieses Feld ist auch vorhanden, wenn das Dokument ein Replication or Save Conflict ist.
    Dann müsstest du noch eine weitere Überprüfung mitreinbringen.


    Die Formel müsstest du in deiner Suchformel mit unterbringen und zwar in verneinter Form

  • Ich kapiere es nicht wie ich die Formel da rein bekomme, er erkennt mir den Befehl nicht an



    Set doccol = db.FTSearch("@Contains( keyObjectStatus; ""Aktiv"" )", 10 )


    Ich habe einfach mal Daten genommen von denen ich weiß das sie existieren.


    keyObjectStaus = Feldname
    "Aktiv" = Feldinhalt


    er erzählt mir jedes Mal das die Abfrage nicht verständlich ist

  • Wenn du auf Feldebene arbeitest benutz am besten Search und nicht FTSearch, da kannst du dann mit den gleichen Formeln wie bei einer Ansicht arbeiten (Nur das Select weglassen).
    Volltextsuche gibt da nur Sinn wenn du unabhängig von Feldern suchen willst

  • Wenn Du schon eine Ansicht ohne Antwortdokumente hast, warum machst Du dann anstelle von db.ftSearch kein View.ftSearch?? Das muesste das Problem doch loesen??

  • Ich werde mir das mal durch den Kopf gehen lassen, irgendwie muß das ja gehen!! Für heute habe ich erst mal Feierabend!!! Ich habe auch keine Lust mehr, den ganzen Tag an ein und dem selben Problem ist deprimierend!!


    Danke für eure Hilfe.

  • So, ich habe es endlich geschaft, glaube ich
    Das Dokumente zählen funzt noch nicht so ganz, aber die Geräte erkennt er jetzt (zumindest die Getesteten) richtig




    Sub Entering(Source As Field)

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doccol As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim view As NotesView
    Dim dt As NotesDateTime
    Dim ws As New notesUIWorkspace

    Set UIdoc=ws.CurrentDocument
    Set dt = New NotesDateTime("1.1.2000")
    Set db=New NotesDatabase("SERVER" , "DATENBANK")
    If Not db.IsFTIndexed Then
    Call db.UpdateFTIndex(True)
    End If

    Set db=New NotesDatabase("SERVER" , "DATENBANK")
    If Not db.IsFTIndexed Then
    On Error 4080 Resume Next
    Call db.UpdateFTIndex(True)
    If Err=4080 Then
    Messagebox("Datenbank kann nicht auf dem Server " & db.Server & " indiziert werden!")
    Exit Sub
    End If
    End If

    Dim Rückgabewert As Integer
    Dim Fieldname As String

    suchNr = uidoc.FieldGetText("Inventarnummer")

    Set view = db.GetView( "VIEW" )
    Call view.FTSearch( suchNr, 0 )
    ' view is filtered

    Set doc = view.GetFirstDocument
    While Not ( doc Is Nothing )
    Forall x In doc.GetItemValue("Status")
    If x = "Aktiv" Then
    Call uidoc.FieldSetText("test","")
    Call uidoc.FieldSetText("DruckerInaktiv","")
    Call uidoc.FieldSetText("Bearbeiten","True")
    Call uidoc.FieldSetText("fldStatus",x)
    Else
    Call uidoc.FieldSetText("DruckerInaktiv","Der Drucker ist Inaktiv")
    Call
    uidoc.FieldSetText("fldStatus",x)
    var = Messagebox("Der Drucker ist laut Datenbank nicht Aktiv.
    Wollen Sie dennoch die Maske öffnen? ", 36, "Inaktiv")
    If var = 6 Then
    Call uidoc.Save
    End If
    If var = 7 Then
    Call uidoc.Save
    Call uidoc.Close(True)
    End If
    End If
    End Forall
    Set doc = view.GetNextDocument( doc )
    Wend
    End Sub

  • Nur als Hinweis:


    Deine Art der Suche ist recht ineffektiv, da du ja nur nach genau einem Schlüssel in einem Feld suchst.
    Besser wäre da eine Ansicht kategorisiert nach der Inventarnummer und dann ein GetAllDocumentsByKey.


    FT-Suchen sind dann sinnvoll wenn du nach Texten suchst, aber nicht oder nicht genau weisst in welchem feld sich der Wert befinden kann

  • Danke für den Tipp,


    das Problem dabei ist das ich das immer erst absegnen lassen muß wenn ich in der anderen Datenbank einen View erstelle, daher habe ich das jetzt versucht ohne zu lösen.