http://forum.codenet.ru/showthread.php? ... adid=11948
Есть необходимость создавать программно фильтр в текущем представлении папки (типа <поле> = <значение>). Использую Office XP (SP 2) и MS Exchange
Для этого меняю свойство xml, соответсвующего View.
вот кусок кода:
// создаем парсер xml
Set objXML = CreateObject("MSXML2.DOMDocument.4.0")
// вытягиваем все view из нужной папки
Set objViews = Application.GetNameSpace("MAPI").Folders("Общие папки").Folders("Все общие папки").Folders("База клиентов").Folders("Курсы").Views
Set objView = objViews.Item("default")
// загружаем xml в парсер
objXML.loadXML(objView.XML)
Set objRoot = objXML.documentElement
Set newNode = objXML.createNode(1, "filter", "")
// ставим фильтр типа "сотрудник=test"
newNode.Text = "(""DAV:isfolder"" = false AND ""DAV:ishidden"" = false) AND (""http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/Сотрудник"" = 'Test')"
Set filterNode = objRoot.insertBefore(newNode, objRoot.childNodes.item(1))
objView.XML = objXML.XML
'Save and apply the new view.
objView.Save
// эпплаим view и показываем отфильтрованный фолдер
objView.Apply
Application.GetNameSpace("MAPI").Folders("Общие папки").Folders("Все общие папки").Folders("База клиентов").Folders("Курсы").Display
================
однако при попытке сохранения фильтра, возникает ошибка "Не удается правильно сохранить представление".
При попытке создать представление вручную из меню outlook (вид/тек. представление/изм. тек. представление/отбор/дополнительно), все работает. Однако, если я пытаюсь через это же меню напрямую применить автоматиечски сгенеренный (outlookom) SQL фильтр, получаю ошибку "Ошибка при анализе текста SQL" (и это текст SQL сгенеренный САМИМ outlook!!!).
Читал, что был такой баг outlook http://support.microsoft.com/default.aspx?scid=kb;en-us;314248 однако он ликвидировался в SP2, поставил обновление, но ошибка повторяется.
Кто-нибудь сталкивался с подобным????
Буду очень признателен за ответы.[/url]