我想以编程方式从SQL数据库中获取新任务,并将它们添加到我的Outlook任务列表中。查询我需要的所有数据并将它们添加到MS-Outlook的任务列表中是没有问题的。下面是我的代码:
Outlook.TaskItem oTask = outlookApp.CreateItem(Outlook.OlItemType.olTaskItem);
oTask.Subject = "Go do task 1";
oTask.DueDate = Convert.ToDateTime("03/20/2015");
oTask.StartDate = Convert.ToDateTime("03/20/2015");
oTask.Body = "test task body";
oTask.SchedulePlusPriority = "High";
oTask.Status = Microsoft.Office.Interop.Outlook.OlTaskStatus.olTaskInProgress;
oTask.Save();
但是,我想检查Outlook任务列表中是否已存在相同的项目(1列或2列的组合)。如果任务项已经存在,则不要保存它。有没有办法做到这一点?
我真的很感激这里的任何帮助。
答案 0 :(得分:1)
这有用吗? (源代码修改,感谢德米特里)
private bool IsTaskItemExists(TaskObject oTaskItem)
{
Outlook.NameSpace ns = null;
Outlook.MAPIFolder tasksFolder = null;
Outlook.Items taskFolderItems = null;
Outlook.TaskItem task = null;
Outlook.Application outlookApp = new Application();
bool foundItem = false;
try
{
ns = outlookApp.Session;
tasksFolder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderTasks);
taskFolderItems = tasksFolder.Items;
foundItem = (taskFolderItems.Find(String.Format("[Property Name]='{0}'", oTaskItem.Property) ) != null);
return foundItem;
}
finally
{
if (taskFolderItems != null)
Marshal.ReleaseComObject(taskFolderItems);
if (tasksFolder != null)
Marshal.ReleaseComObject(tasksFolder);
if (ns != null)
Marshal.ReleaseComObject(ns);
}
}
答案 1 :(得分:0)
标准是什么?打开创建任务的文件夹(Application.Session.GetDefaultFolder(olFolderTasks),然后使用Items.Find / FindNext / Restrict
进行搜索