Autor Thema: Probleme mit db.search / Finde nicht die gewünschten Dokumente  (Gelesen 2456 mal)

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Hallo!

Wir nutzen eine kleine Datenbank, in der alle MA ihre abgeschlossenen Produkte dokumentieren.
Nun möchte ich denen ein Auswertungstool zur Verfügung stellen. Dazu habe ich eine separate Maske erstellt, in der sie den gewünschten Zeitraum (DatumVon und DatumBis) für die Auswertung definieren können.
Mit Hilfe des db.search wollte ich auf diese Dokumente zugreifen. Leider will's nicht so, wie ich es gerne hätte...  

So wie im u.g. Script stehen in der Collection alle Dokumente der Datenbank drin, auch wenn in denen das Feld "Abschlussdat" gar nicht existiert. Wenn ich die Selektion erweitere auf
& Abschlussdat != ""
dann werden gar keine Dokumente mehr angezeigt.

Wo ist mein Fehler?
Bitte um Hilfe, habt aber Geduld mit mir, bin brutaler Anfänger ....


Set doc = uidoc.document
     
Dim Selektion As String
Dim DatumVon As Variant, DatumBis As Variant
DatumVon = doc.DatumVon(0)
DatumBis = doc.DatumBis(0)
Selektion = { Abschlussdat >= DatumVon & Abschlussdat <=  DatumBis }
Set col = db.search(Selektion, Nothing,0)
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Hallo, Bille,

erstmal: Willkommen im Forum !

Für späteren Gebrauch - auch wenn das jetzt nichts mit Deinem spezifischen Problem zu tun hat: Dein Query-String kann nicht funktionieren. Im Query-String muss stehen:
"BEDINGUNG AUF BASIS @FUNCTIONS". Du musst also Anführungszeichen im String selber erzeugen. Wenn Du dann noch auf LS_Variablen zugreifst, müsste Deine QueryString (vereinfacht) wie folgt aussehen:
Selektion = { "Abschlussdat >= } & DatumVon & {"}
Die geschweiften Klammern sind also die "Über-Anführungszeichen", und Deine LS-Variable muss "native" (also als purer Wert) dazwischen geschrieben werden. Das sieht erstmal verwirrend aus, aber mit der Zeit ...  ;D

Mit NotesDatabase.Search kannst Du allerdings Konstrukte mit Datumswerten nicht verwenden - hier gehen in der Tat nur Strings. Um Datumswerte zu verwenden, musst Du die Methode NotesDatabase.FTSearch verwenden.
Hier die entscheidenden Zeilen, um beispielsweise alle Dokumente in einer Mail-DB zu suchen, die nach dem 19.07.2004 gepostet wurden:
szQuery = "FIELD PostedDate >= " & vDate
Set coll = dbCurrent.FTSearch (szQuery, 0)

In dieser Form müsstest Du also auch Deine Routine aufbauen. Und vorab musst Du auf jeden Fall prüfen, ob die DB denn überhaupt einen FTI hat - damit Du nicht in üble Fehler gerätst.

HTH,
Bernhard


Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Hi Bernhard,

jipi, es hat geklappt !!!    :)

Allerdings ist mir das mit dem FTI nicht ganz klar. Ich hab die DB jetzt einfach mal indiziert. Muss ich da künftig was beachten?
Und, ist das für die Performance nicht schlecht?

Wobei, wichtig ist mir momentan eigentlich nur, dass das Teil läuft. Und Dank Deiner Hilfe ist es so.

Thanks a lot!!!
Bille
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Für die Performance schlecht ? Never ever, Bille ! Grosse Datenbanken und NotesDatabase.Search - DA schlafen einem die Füsse ein, wohingegen es mit NotesDatabase.FTSearch am allerschnellsten geht (bei einer "Irgendwo-im-Dokument-Suche").

Was ich mit der FTI-Kontrolle meinte: Du musst - bevor Du Deine Suche ausführst - prüfen, ob die DB auch einen FTI aufweist. Wenn nicht:
- Fehlermeldung und Abbruch, wenn DB auf Server
- FTI anlegen (wenn DB lokal - weil da darf jeder User den FTI anlegen).

Noch Fragen ? Einfach posten - das hier ist das meistgelesene Forum, was dann auch noch die meisten und qualifiziertesten Antworten zu bieten hat  ;)

Ciao,
Bernhard

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Hallo Bernhard,

nachdem ich die nächsten Tage an der Datenbank weiterarbeiten werde, kann es durchaus sein, dass ich mich desöfteren im Forum "ausweinen" werde.

Find ich echt klasse, wie schnell man da mit Hilfe rechnen darf.

Besten Dank!!!
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz