Выборка контактов. Outlook

Программирование на Visual Basic for Applications
argnist
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 13.03.2008 (Чт) 15:41

Выборка контактов. Outlook

Сообщение argnist » 13.03.2008 (Чт) 15:59

Добрый день,

Требуется сделать выборку контактов в Outlook (2003), у которых день рождения будет за определенный период времени (напр. ближайший месяц).
В свойствах представления есть возможность задать условие через SQL DASL, но тогда вручную необходимо каждый раз менять диапазон дат. Хотелось бы это делать автоматом.

Все что у меня получилось, это сформировать запрос для фильтра:

Код: Выделить всё
...
Dim PrDay As Date
Dim PlPrDay As Date
Dim MnPrDay As Date
Dim str As String

PrDay = Date

PlPrDay = DateAdd("d", 24, PrDay)
MnPrDay = DateAdd("d", -7, PrDay)

str = "(NOT(" & AddQuotes("urn:schemas:contacts:bday") & " Is Null) AND (" & AddQuotes("urn:schemas:contacts:bday") _
    & " >= '" & MnPrDay & " 0:00' OR " & AddQuotes("urn:schemas:contacts:bday") & " <= '" & PlPrDay & " 0:00'))"
...

Public Function AddQuotes(ByVal SchemaName As String) As String
    On Error Resume Next
    AddQuotes = Chr(34) & SchemaName & Chr(34)
End Function


Но как потом передать эту строку в фильтр представления (вкладка SQL), для меня пока остается загадкой. Хотелось бы услышать возможные варианты решения. Спасибо.

P.S. в Outlook 2007 я смог найти решение, но вся проблема в том что мне необходимо это именно для Outlook 2003...:)

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 14.03.2008 (Пт) 0:06

Я делал через свойство XML:
Код: Выделить всё
    Set objView = Application.ActiveExplorer.CurrentView
    objParser.loadXML objView.XML
    Set nodeFilter = objParser.selectSingleNode("view/filter")
    If nodeFilter Is Nothing Then
        Set nodeFilter = objParser.createElement("filter")
        nodeFilter.Text = "NOT(""http://schemas.microsoft.com/mapi/id/{00062004-0000-0000-C000-000000000046}/8084001f"" IS NULL)"
        objParser.documentElement.appendChild nodeFilter
    Else
        nodeFilter.Text = "NOT(""http://schemas.microsoft.com/mapi/id/{00062004-0000-0000-C000-000000000046}/8084001f"" IS NULL)"
    End If
    objView.XML = objParser.XML


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54

    TopList