Lotus notes 有什么方法可以让我查询Notes数据库吗

Lotus notes 有什么方法可以让我查询Notes数据库吗,lotus-notes,lotus-domino,lotus,domino-designer-eclipse,Lotus Notes,Lotus Domino,Lotus,Domino Designer Eclipse,我正在抓取给定两个日期的会议:例如,抓取当月的所有会议 假设我在指定的时间内大约有45次会议。我的web服务花费了很多时间。 我现在就是这样做的: 我获取日历视图中的所有文档 检查所有文档的开始日期和结束日期 如果任何会议在指定的时间段内,我将构建一个数组并返回该数组 这是正确的吗?这是正确的,但当您有大量文档时,性能不是很好。基本上,您将创建一个视图,其中第一列是会议(开始)日期,已排序。在LotusScript中,您可以访问该视图,设置与开始日期匹配的第一次会议的“光标”,然后逐步遍历该视图

我正在抓取给定两个日期的会议:例如,抓取当月的所有会议

假设我在指定的时间内大约有45次会议。我的web服务花费了很多时间。 我现在就是这样做的:

  • 我获取日历视图中的所有文档

  • 检查所有文档的开始日期和结束日期

  • 如果任何会议在指定的时间段内,我将构建一个数组并返回该数组


  • 这是正确的吗?

    这是正确的,但当您有大量文档时,性能不是很好。基本上,您将创建一个视图,其中第一列是会议(开始)日期,已排序。在LotusScript中,您可以访问该视图,设置与开始日期匹配的第一次会议的“光标”,然后逐步遍历该视图,直到到达结束日期之后的日期

    阅读视图的GetDocumentByKey方法。在此进一步:


    嗯。。。再进一步想一想,如果你有一个开始日期但没有匹配的会议会发生什么。。。因此,请参考FTSearch()方法

    这是正确的,但当您有大量文档时,性能不是很好。基本上,您将创建一个视图,其中第一列是会议(开始)日期,已排序。在LotusScript中,您可以访问该视图,设置与开始日期匹配的第一次会议的“光标”,然后逐步遍历该视图,直到到达结束日期之后的日期

    阅读视图的GetDocumentByKey方法。在此进一步:


    嗯。。。再进一步想一想,如果你有一个开始日期但没有匹配的会议会发生什么。。。因此,请参考FTSearch()方法

    这是正确的,但当您有大量文档时,性能不是很好。基本上,您将创建一个视图,其中第一列是会议(开始)日期,已排序。在LotusScript中,您可以访问该视图,设置与开始日期匹配的第一次会议的“光标”,然后逐步遍历该视图,直到到达结束日期之后的日期

    阅读视图的GetDocumentByKey方法。在此进一步:


    嗯。。。再进一步想一想,如果你有一个开始日期但没有匹配的会议会发生什么。。。因此,请参考FTSearch()方法

    这是正确的,但当您有大量文档时,性能不是很好。基本上,您将创建一个视图,其中第一列是会议(开始)日期,已排序。在LotusScript中,您可以访问该视图,设置与开始日期匹配的第一次会议的“光标”,然后逐步遍历该视图,直到到达结束日期之后的日期

    阅读视图的GetDocumentByKey方法。在此进一步:


    嗯。。。再进一步想一想,如果你有一个开始日期但没有匹配的会议会发生什么。。。因此,请参考FTSearch()方法

    这种方法是正确的,但效率很低。最好使用NotesDatabase-类并创建一个查询以与search-方法一起使用: 这里是LotusScript中的一个示例(因为您没有指定语言)

    Dim ses as New notes session
    Dim db as NotesDatabase
    将dc设置为备注文档集合
    作为字符串的Dim strQuery
    Set db=ses.CurrentDatabase
    strQuery={Form=“约会”&_
    (开始日期>=[01.01.2014]&开始日期<[01.02.2014])|_
    (结束日期>=[01.01.2014]和结束日期<[01.02.2014]))
    设置dc=db.Search(strQuery,Nothing,0)
    “-循环浏览此集合。。。
    

    当然,您需要通过从今天开始构建strQuery来动态调整它。。。但这将比您的版本性能更好。

    这种方法是正确的,但效率非常低。最好使用NotesDatabase-类并创建一个查询以与search-方法一起使用: 这里是LotusScript中的一个示例(因为您没有指定语言)

    Dim ses as New notes session
    Dim db as NotesDatabase
    将dc设置为备注文档集合
    作为字符串的Dim strQuery
    Set db=ses.CurrentDatabase
    strQuery={Form=“约会”&_
    (开始日期>=[01.01.2014]&开始日期<[01.02.2014])|_
    (结束日期>=[01.01.2014]和结束日期<[01.02.2014]))
    设置dc=db.Search(strQuery,Nothing,0)
    “-循环浏览此集合。。。
    

    当然,您需要通过从今天开始构建strQuery来动态调整它。。。但这将比您的版本性能更好。

    这种方法是正确的,但效率非常低。最好使用NotesDatabase-类并创建一个查询以与search-方法一起使用: 这里是LotusScript中的一个示例(因为您没有指定语言)

    Dim ses as New notes session
    Dim db as NotesDatabase
    将dc设置为备注文档集合
    作为字符串的Dim strQuery
    Set db=ses.CurrentDatabase
    strQuery={Form=“约会”&_
    (开始日期>=[01.01.2014]&开始日期<[01.02.2014])|_
    (结束日期>=[01.01.2014]和结束日期<[01.02.2014]))
    设置dc=db.Search(strQuery,Nothing,0)
    “-循环浏览此集合。。。
    

    当然,您需要通过从今天开始构建strQuery来动态调整它。。。但这将比您的版本性能更好。

    这种方法是正确的,但效率非常低。最好使用NotesDatabase-类并创建一个查询以与search-方法一起使用: 这里是LotusScript中的一个示例(因为您没有指定语言)

    Dim ses as New notes session
    Dim db as NotesDatabase
    将dc设置为备注文档集合
    作为字符串的Dim strQuery
    Set db=ses.CurrentDatabase
    strQuery={Form=“约会”&_
    (开始日期>=[01.01.2014]&开始日期<[01.02.2014])|_
    (结束日期>=[01.01.2014]和结束日期<[01.02.2014]))
    设置dc=db.Search(strQuery,Nothing,0)
    “-循环浏览此集合。。。
    

    当然,您需要通过从今天开始构建strQuery来动态调整它。。。但这将比您的版本性能更好。

    如果您使用的是Notes/Domino9.0或更高版本,则应使用内置的日历类。这些可以从LotusScript或Java获得。下面是一个使用Java的示例。给定一个数据库对象和一个日期范围,它将打印该范围内的所有条目
    Dim ses as New NotesSession
    Dim db as NotesDatabase
    Dim dc as NotesDocumentCollection
    Dim strQuery as String
    
    
    Set db = ses.CurrentDatabase
    strQuery = {Form = "Appointment" & _
    (StartDate >= [01.01.2014] & StartDate < [01.02.2014]) | _
    (EndDate >= [01.01.2014] & EndDate < [01.02.2014])}
    Set dc = db.Search( strQuery , Nothing, 0 )
    '- Cycle through this collection...
    
    private static void printRange(Database database, DateTime start, DateTime end) throws NotesException {
    
        // Get the calendar object from the database
        NotesCalendar calendar = database.getParent().getCalendar(database);
        if ( calendar != null ) {
    
            // Get a list of calendar entries
            Vector<NotesCalendarEntry> entries = calendar.getEntries(start, end);
            if ( entries != null ) {
    
                // For each entry ...
                Iterator<NotesCalendarEntry> iterator = entries.iterator();
                while (iterator.hasNext()) {
                    NotesCalendarEntry entry = iterator.next();
    
                    // Read the iCalendar representation
                    String icalendar = entry.read();
    
                    // Get the Notes UNID
                    Document doc = entry.getAsDocument();
                    String unid = doc.getUniversalID();
    
                    // Print UNID and iCalendar to console
                    System.out.println("Entry UNID: " + unid);
                    System.out.println(icalendar);
                }
            }
        }
    }