
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
18.09.2006, 21:19:23
|
|||
|---|---|---|---|
|
|||
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
Здравствуйте, товарищи программисты, помогите, пожалуйста, советом. Я написал небольшую программу на VBA, которая должна работать в среде Microsoft Word. Программа (помимо всего прочего) использует ADO для обращения к базе данных в формате Microsoft Access, а также функции для работы со строками (а именно, Mid, проблемы с которой тут уже у кого-то возникали). Вроде бы программа правильно работает на разных версиях Windows и Office (хотя я протестировал еще далеко не все возможные комбинации), но каждый раз оказывается, что что она ссылается на отсутствующие версии библиотек. На одной машине есть ADO 2.8, на другой 2.6, на третьей 2.7; функция Mid живет еще в какой-то библиотеке, и опять оказывается, что на разных машинах разные версии. В результате я получаю на каждой новой машине ошибку компиляции, открываю проект, меняю reference с отсутствующей версии библиотеки на присутствующую, после этого все начинает работать. Чего хочется: чтобы при наличии Windows от 2000 и Office от 2000 программа работала сразу и не требовала перенастройки reference'ов. Вопрос: можно ли этого добиться, и, если да, то как именно? -- Может быть есть какие-то версии библиотек, которые присутствуют заведомо? Например, версию ADO 2.0 я вижу везде. Может быть ссылаться на нее? Чем она хуже 2.6, 2.7 или 2.8? -- Может быть нужно dll-файлы используемых библиотек поставлять вместе с программой (сейчас она физически представляет собой комплект из вордовского шаблона и аксессовской базы данных)? -- Может быть есть еще какой-то выход из положения, который мне в голову неприходит? Предполагается, что программа будет иметь хождение внутри крупной организации. Настраивать ее лично на машине у каждого пользователя я не смогу, да это никто и не будет приветствовать. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.09.2006, 22:27:49
|
|||
|---|---|---|---|
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
aka-AuthorВопрос: можно ли этого добиться, и, если да, то как именно?Выкинь VBA, напиши на VB. aka-Author-- Может быть есть какие-то версии библиотек, которые присутствуют заведомо? Например, версию ADO 2.0 я вижу везде. Может быть ссылаться на нее? Чем она хуже 2.6, 2.7 или 2.8?Наличием багов и отсутствием фич. В приниципе, можно принудительно ограничится 2.0 которая идет вместе с W2K (или Office2000? не проверял) будет жить и работать, но возможны глюки которые были исправлены в более поздних версиях. aka-Author-- Может быть нужно dll-файлы используемых библиотек поставлять вместе с программой (сейчас она физически представляет собой комплект из вордовского шаблона и аксессовской базы данных)?Возможно, но это потребует инсталляции всех использованых AciveX библиотек. Если сейчас достаточно скопировать шаблон и базу, то потом прийдется использовать инсталлятор. aka-Author-- Может быть есть еще какой-то выход из положения, который мне в голову неприходит?1) Выкинуть VBA, переписать все на VB. 2) Перенести весь код из Ворда в Акцесс и забыть про ADO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2006, 00:32:32
|
|||
|---|---|---|---|
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
Я думаю, для начала просто используй познее связывание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2006, 01:50:10
|
|||
|---|---|---|---|
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
ДмитЯ думаю, для начала просто используй познее связывание.Расскажи мне глупому, как делается позднее связывание ActiveX библиотек и VBA в Word? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2006, 04:20:49
|
|||
|---|---|---|---|
|
|||
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
Спасибо вам за советы. Не знаю, в какой степени я смогу ими воспользоваться сейчас, потому что времени у меня уже остается совсем не много. Надо написать документацию, заделать всякие дыры и сдаваться. Но, во всяком случае, запомню на будущее. Я смотрю, не весело все с VBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2006, 09:21:40
|
|||
|---|---|---|---|
|
|||
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
White Owl ДмитЯ думаю, для начала просто используй познее связывание.Расскажи мне глупому, как делается позднее связывание ActiveX библиотек и VBA в Word? Dim obj As Object ' Variant Set obj = CreateObject("ADODB.Recordset") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2006, 09:32:32
|
|||
|---|---|---|---|
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
White Owl ДмитЯ думаю, для начала просто используй познее связывание.Расскажи мне глупому, как делается позднее связывание ActiveX библиотек и VBA в Word? Цитата из книги Джона Уокенбаха авторПоздняя привязка ■ На этапе выполнения можно использовать или функцию CreateObject для создания объекта, или функцию GetObject для получения сохраненного объекта. Такие обьекты объявляются как объекты универсального типа Object. Ссылка на обьекты задается на этапе выполнения. Позднюю привязку можно применить даже тогда, когда неизвестна версия библиотеки объектов, установленной в операционной системе. Например, следующий код который управляет Word 97 и более поздними версиями, создает объект Word: Dim WordApp As Object Set WordApp = CreateObject("Word.Application") Если в системе установлено несколько версий Word, то можно создать обьект определенной версии. Приведенный ниже оператор управляет объектом Word 2000: Set WordApp = CreateObject {"Word. Application.9"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2006, 19:55:52
|
|||
|---|---|---|---|
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
э-кхм.... да, действительно. Протормозил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2006, 01:10:23
|
|||
|---|---|---|---|
|
|||
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
Про позднее связывание хороший совет. Спасибо! И "тормозной" вопрос тоже был очень кстати, потому что он привел к появлению полного ответа на мой вопрос. Может быть вы еще сможете дать совет вот на какую тему. Когда я открываю диалоговое окно с References, там по умолчанию к проекту подключено несколько библиотек. Как мне узнать, какие из них действительно нужны, а какие можно спокойно отключить? Или можно вообще об этом не беспокоиться, потому что при отсутствии явных обращений к ним ссылки на них ни на что не повлияют? Или повлияют? Например, какой-нибудь библиотеки не окажется на машине, а из-за этого "отвалится" что-нибудь действительно нужное. В одном из соседних топиков человек жаловался, что у него отвалилась функция Mid. Ему отвечали, что, возможно, это из-за отсутствия какой-нибудь "ненужной" библиотеки, на которую в проекте стояла ссылка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2006, 01:59:52
|
|||
|---|---|---|---|
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
aka-AuthorКак мне узнать, какие из них действительно нужны, а какие можно спокойно отключить?Методом научного тыка. Отключить и попробовать запустить. Если упадет с сообщением что не найден объект или не объявлена функция - значит эта библиотека нужна. Все работает и не падает - библиотека не нужна. aka-AuthorИли можно вообще об этом не беспокоиться, потому что при отсутствии явных обращений к ним ссылки на них ни на что не повлияют? Или повлияют? Например, какой-нибудь библиотеки не окажется на машине, а из-за этого "отвалится" что-нибудь действительно нужное. В одном из соседних топиков человек жаловался, что у него отвалилась функция Mid. Ему отвечали, что, возможно, это из-за отсутствия какой-нибудь "ненужной" библиотеки, на которую в проекте стояла ссылка.Да, беспокоится нужно. Ссылка на отстутвующую библиотеку, даже если ничего из нее не используется может привести к очень странным глюкам типа упомянутого. Микрософты делают удобный, но не устойчивый софт, увы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2006, 09:44:23
|
|||
|---|---|---|---|
|
|||
Как сделать ссылки на библиотеки переносимыми с машины на машину? |
|||
|
#18+
aka-AuthorПро позднее связывание хороший совет. Спасибо! это плохой совет. Раннее связывание - эффективней и с ним приятней работать вы все равно должны иметь компоненты, правильно зарегистрированные на машине при любом "связывании" - так почему не сделать установщик нужных компонентов самому? ADO,например, ставите клиенту последней версии и живете спокойно с ссылками на 2.8. Про "Mid" - это вы напридумали и это не проблема. Юзайте полный синтаксис ВашКласс.ВашаФункция- типа vba.Strings.Mid (для VBA этого не нужна - ссылка на VBA имеет приоритет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=61&tablet=1&tid=2184255]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 295ms |

| 0 / 0 |
