jlalande
asked on
query Notes for calendar items today
I am using the Lotus Domino and Notes Toolkit for COM via C#.
Currently, I can retrieve a complete list of calendar NotesDocument entries in a NotesView. From there, I must iterate through the list to find entries for today because recurring calendar events are stored in the first entry created for that entry. This is so slow.
Is there a way to get a NotesView containing only the calendar events for today using Notes own query engine?
Currently, I can retrieve a complete list of calendar NotesDocument entries in a NotesView. From there, I must iterate through the list to find entries for today because recurring calendar events are stored in the first entry created for that entry. This is so slow.
Is there a way to get a NotesView containing only the calendar events for today using Notes own query engine?
ASKER
The method to retrieve a view populated with calendar entries is:
NotesView view = db.GetView("($Meetings)");
where db is the database.
For recurring calendar entry, when created, there is only one entry with a document property named RepeatInstanceDates containing a list of date/times.
NotesView view = db.GetView("($Meetings)");
where db is the database.
For recurring calendar entry, when created, there is only one entry with a document property named RepeatInstanceDates containing a list of date/times.
Try with
NotesView view = db.GetView("($Calendar)");
NotesView view = db.GetView("($Calendar)");
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Using GetDocumentByKey isn't returning a collection containing the recurring meeting.
Meetings were only returned at all if I used CalSummary, but only the one instance meetings today.
Meetings were only returned at all if I used CalSummary, but only the one instance meetings today.
What I'd try:
- get all appointments for today using the CalSummary view (GetAllDocumentsByKey("02- 12-2010") or a different date text format)
- and for tomorrow, etc.
- get all appointments for today using the CalSummary view (GetAllDocumentsByKey("02-
- and for tomorrow, etc.
ASKER
With only a recurring appointment today and one tomorrow, getting the appointments today and tomorrow as you describe gives me nothing.
Maybe the COM toolkit won't do this. Is there another API for Domino/Notes that will?
Maybe the COM toolkit won't do this. Is there another API for Domino/Notes that will?
ASKER
In a final effort to get this question put to bed, is there any way to grab a list of calendar entries for meetings on a given day, both one-time meetings and repeating meetings created in the past.
I am using the COM toolkit, but if this is not possible using COM, I can use another.
I am using the COM toolkit, but if this is not possible using COM, I can use another.
ASKER
This is getting stale, but I think I found an answer.
Using the Search method of the NotesDatabase object, I can call:
db.Search("Form = 'Appointment' & Repeats = '1'");
Using the Search method of the NotesDatabase object, I can call:
db.Search("Form = 'Appointment' & Repeats = '1'");
Thanks!
You could also create a full-text index in your database, so you can do a full-text search. It's only useful if it's a database with a largee number of documents. db.Search is a sequential search, db.FtSearch uses the full-text index. The FTSearch equivalent of your query is
"Field Form=Appointment & Field Repeates=1"
You could even make both queries more specific, e.g. to get only the items for one day, with additional conditions.
You could also create a full-text index in your database, so you can do a full-text search. It's only useful if it's a database with a largee number of documents. db.Search is a sequential search, db.FtSearch uses the full-text index. The FTSearch equivalent of your query is
"Field Form=Appointment & Field Repeates=1"
You could even make both queries more specific, e.g. to get only the items for one day, with additional conditions.
ASKER
Hi sjef,
This is the mechanism I am using now where the query string looks like:
NotesView repeatsView = this.database.GetView("($M eetings)") ;
var query = "([Repeats] = 1) and not ([NoticeType] = C) and not ([NoticeType] = R) ";
query += "and not ([AppointmentType] = 4) and not ([AppointmentType] = 1)";
int repeatsCount = repeatsView.FTSearch(query , repeatsView.EntryCount);
However, experiments today showed db.Search to be over twice as fast. Furthermore, the index could be out of date as explained here: http://mattwhite.me/blog/2010/1/1/why-using-ftsearch-in-lotusscript-is-usually-a-bad-idea.html
I do have another open question about finding a date in the field RepeatInstanceDates. If you have an answer for that, that would make my year.
https://www.experts-exchange.com/questions/26846326/Match-today's-date-with-dates-in-NotesDocument-field.html
This is the mechanism I am using now where the query string looks like:
NotesView repeatsView = this.database.GetView("($M
var query = "([Repeats] = 1) and not ([NoticeType] = C) and not ([NoticeType] = R) ";
query += "and not ([AppointmentType] = 4) and not ([AppointmentType] = 1)";
int repeatsCount = repeatsView.FTSearch(query
However, experiments today showed db.Search to be over twice as fast. Furthermore, the index could be out of date as explained here: http://mattwhite.me/blog/2010/1/1/why-using-ftsearch-in-lotusscript-is-usually-a-bad-idea.html
I do have another open question about finding a date in the field RepeatInstanceDates. If you have an answer for that, that would make my year.
https://www.experts-exchange.com/questions/26846326/Match-today's-date-with-dates-in-NotesDocument-field.html
As I said, Search is sequential, and depending on the quality of the server you'll notice that Search is faster up to say 10000 documents. Beyond that, FTSearch wins. If you do this query once per day, or 10 times, or even 100, use db.Search.
Just a question: the database *is* indeed full-text indexed? FTSearch also works on a non-indexed database, but is a lot slower then.
I'll look at the other question tomorrow.
Just a question: the database *is* indeed full-text indexed? FTSearch also works on a non-indexed database, but is a lot slower then.
I'll look at the other question tomorrow.
Which view do you use to get the documents, and how do you retrieve them?