2010-03-19 7 views
1

J'ai essayé de trouver quelle est la meilleure façon de chercher rassembler tous les documents dans une base de données qui ont une certaine date. À l'origine, j'essayais d'utiliser FTsearch ou de rechercher pour parcourir une collection de documents, mais je suis passé au traitement d'une vue et des documents associés.Recherche d'une date entre les intervalles donnés - Lotus

Ma première question est de savoir quelle est la manière la plus simple de parcourir un ensemble de documents et de trouver si une date stockée dans les documents est supérieure ou inférieure à une date spécifiée? Donc, pour continuer à travailler, j'ai implémenté le code suivant.

If (doc.creationDate(0) > cdat(parm1)) 
    And (doc.creationDate(0) < CDat(parm2)) then 
    ... 
end if 

mais les résultats sont hors

Included! Date:3/12/10 11:07:08 P1:3/1/10 P2: 3/5/10 
Included! Date:3/13/10 9:15:09 P1:3/1/10 P2: 3/5/10 
Included! Date:3/17/10 16:22:07P1:3/1/10 P2: 3/5/10 

Vous pouvez voir que la date stockée dans la doc n'est pas entre P1 et P2. MAIS! cela limite les documents avec une date inférieure à P1 correctement. Donc, je n'obtiendrai pas de résultat pour un document dont la date est inférieure au 3/1/10

S'il n'y a pas de meilleur moyen que l'instruction if, quelqu'un peut-il m'aider à comprendre pourquoi les deux exemples ci-dessus sont inclus?

Répondre

5

Salut vous pouvez essayer quelque chose comme ceci:

searchStr = {(Form = "yourForm" & ((@Created > [} & parm1 & {]) & (@Created < [} & parm2 & {])))} 

Set docCollection = currentDB.Search(searchStr, Nothing, 0) 

If(docCollection.Count > 0)Then 
    'do your stuff with the collection returned 
End If 
+0

J'ai essayé la recherche et FTsearch, mais la partie qui me manquait était le [] autour des dates. Merci beaucoup! –

2

réponse Carlos est assez bon.

Si vous avez beaucoup de documents, vous pouvez également utiliser une recherche en texte intégral qui sera beaucoup plus rapide. L'appel de méthode est très similaire (db.ftsearch(), l'aide en ligne peut être trouvée here). La méthode de recherche de base de données standard fonctionne de la même manière que les mises à jour d'index de vue. Elle peut donc être un peu lente si vous avez des milliers de documents à rechercher. Assurez-vous d'activer l'index de texte intégral pour votre base de données dans les propriétés de la base de données (dernier onglet).

Syntaxe sur cette approche est très similaire, this lien fournit une bonne référence pour FTsearch. En utilisant la syntaxe de Carlos, vous pouvez remplacer FTSearch et searchStr par une recherche plus rapide.

+0

link est un gardien. +1 pour la référence –

Questions connexes