Здравствуйте господа коллеги-программеры
Вот такой вопросик возник. Запускаем Access создаём БД, в ней табличку с полем типа OLE. Для того, чтобы добавить в неё объект выполняем щелчок правой кнопкой мыши выбираем объект(ну например Word из файла). В таблицу записывается объект Wordи по 2-ному клику – открывается MS Word. Причём на записи в табличке написано "Объект Microsoft Word". Так вот возник вопрос – каким образом проделать те же самые действия программно на VBA(без создания формы и присоединённой рамки объекта!!!)??? Есть возможность такая???
Заранее спасибо!
2 декабря 2008 в 22:00
когда говоришь OpenDatabase, передаешь юзернейм и пароль. при этом DBEngine должен использовать соответствующий workgroup-файл.
2 декабря 2008 в 18:03
Леонид maxleo Максимов, пасибо за помощь!
В принципе задачу я выполнил…правда не обошлось без "хитрых" трюков(в народе – геморроя и с присоединённой рамкой объекта! Больше не знаю как реализовать.Завтра выложу методику решения поставленной задачи!
И появился ещё один вопрос: как с помощью TAccessApplication соединяться с базой, у которой есть пароль?
29 ноября 2008 в 17:02
Конечно заметил ) если бы нет – не спрашивал бы. А VBA здесь при том, что тот, кто поможетмне решить данную задачу на VBA(без использования этой рамки) автоматически поможет мне в решении исходной поставленной задачи…на С++. Это я Вам гарантирую! Если (уж если совсем гении найдутся) кто выложит описание формата данных, по которым Microsoft пишет эти объекты в Access, то задача считай решена. Но как показал мой небольшой анализ(сохранение в двоичном виде данных записанных в записи) в двух случаях – они ооочень отличаются, очень. И "простым" добавлением какого-нибудь заголовка или/и служебной информации это необходится… У них своя специфика. Погуглил в инете – говорят Miscrosoft не задокументировала это дело…
28 ноября 2008 в 22:00
тогда при чем здесь VBA? для VBA приведенный способ решения – самый простой в реализации и использовании (все остальные требуют дополнительных знаний о COM-интерфейсах и способах их использования в VBA).
вот например, прочитайте то, что запишет ваш TOleContainer и то, что запишет присоединенная рамка. заметили разницу?
28 ноября 2008 в 21:01
Да…ещё, при создании рамки на C++, у неё не выполняется метод set_Action(short) (аналог свойства Action на VBA)
28 ноября 2008 в 21:00
Ну во-первых тем, чтов интернете только такой способ решения задачи, а хотелось бы узнать истинное решение …ну а во-вторых, у меня просто задача всё это написать на C++ использую сервер автоматизации, и как-то не хочется создавать форму…геморно всё. Пишу в Builder С++, пробовал использовать TOleConainer – но он пишет тож двоичные данные…Даж не знаю как выйти из этой ситуации. А задача именно такая: чтобы объекты записывались в таблицу также как и при "ручном" их добавлении…
28 ноября 2008 в 20:05
одного vba (без извращений) не достаточно. а чем не устраивает присоединенная рамка объекта?
28 ноября 2008 в 20:01
Ну помогите же мне… У меня получилось записывать объекты как "двоичные данные", а вот как ИМЕННОзаписать туда ка объект OLE внедрённый….нифига не знаю! И инет мне не помог…