|
проблема совместимости разных версий
|
|||
---|---|---|---|
#18+
Добрый день Недавно добавил в базу access возможность экспорта данных в эксель, для этого пришлось подключить библиотеку Microsoft Excel 16.0 Object Library. Проблема в том, что у меня довольно новая версия excel стоит и более старую версию библиотек выбрать нельзя - в списке только один вариант. После добавления библиотек, на компах со старым офисом база запускаться перестала. Пробовал на старом офисе подключить старые библиотеки, но при запуске базы на машине с новым офисом версия библиотек автоматически меняется и при последующем запуске со старого офиса опять та же проблема возникает. Понятно, что есть выходы: 1) поставить на все машины одну версию офиса 2) пилить базу на старом офисе, тогда при распространении ее копий на более новых версиях офиса все будет работать Только у этих вариантов есть недостатки: если базу придется поменять на новой версии офиса - она уже не будет работать на старой. Придется лезть в references и заново подключать библиотеку. Подскажите, есть ли какой-то более универсальный вариант решения проблемы? Поиск в гугле простых решений не обнаружил... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 12:14 |
|
проблема совместимости разных версий
|
|||
---|---|---|---|
#18+
Sergey8969есть ли какой-то более универсальный вариант решения проблемы? Используйте позднее связывание на продакшене и раннее на разработке. Т.е. если во время разработки у Вас есть что-то типа Код: vbnet 1. 2. 3. 4.
перед отдачей в продукт Вы удаляете референс на объектную либу Экселя и корректируете код до Код: vbnet 1. 2. 3. 4.
Таким образом при разработке Вы пользуетесь подсказками Intellisince, а в продукте можете использовать библиотеку любой версии, ту, которая есть на текущей рабочей станции. Само собой, надо внимательно следить, что в объектной модели ничего не поменялось, и не использовать те объекты/свойства/методы, которые добавились или изменились. В крайнем случае в рантайме надо получать версию созданного объекта и, ориентируясь на неё, в местах использования изменившихся объектов организовывать соответствующие IF или SELECT CASE с разными версиями кода для разных версий библиотеки. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 12:21 |
|
проблема совместимости разных версий
|
|||
---|---|---|---|
#18+
Да, если при разработке Вы используете экспортируемые библиотекой константы, то в продукте Вы должны либо использовать их численные значения, либо определить эти константы. Т.е. Код: vbnet 1.
в продукте превратится в Код: vbnet 1.
или в Код: vbnet 1. 2. 3. 4.
Второе предпочтительнее - используемые константы можно один раз объявить как Public в отдельном модуле и подключать его в продукт, не внося изменений в программный код. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 12:30 |
|
проблема совместимости разных версий
|
|||
---|---|---|---|
#18+
Полностью поддерживаю Akina, но хочу добавить, что здесь удобно использовать условную компиляцию. Например: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Тогда "перед отдачей в продукт Вы удаляете референс на объектную либу Экселя и указываете IsExlRef = 0. Всё! Код корректировать не надо. При необходимости доработки кода снова создаете референс, даете IsExlRef = 1, наслаждаетесь подсказками Intellisince, а по завершении см. выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 12:58 |
|
проблема совместимости разных версий
|
|||
---|---|---|---|
#18+
Спасибо за помощь! Разобрался, теперь все нормально работает на всех компах. На самом деле у меня уже код был вида: Код: sql 1. 2. 3. 4.
, только вот эту деталь я не учел: AkinaДа, если при разработке Вы используете экспортируемые библиотекой константы, то в продукте Вы должны либо использовать их численные значения, либо определить эти константы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 14:32 |
|
проблема совместимости разных версий
|
|||
---|---|---|---|
#18+
Весьма чёткое и толковое объяснение от Akina. Я делаю так же для работы с офисными приложениями, используя шаблоны Word и Excel. И для отправки сообщений через Outlook (либо другой почтовый клиент). Дополнительно я ещё проверяю версию Access пользователя, чтобы понять, поддерживается ли у него лента, или надо использовать старую систему меню. например, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 15:00 |
|
проблема совместимости разных версий
|
|||
---|---|---|---|
#18+
Брошу свои 2 копейки. to POKER Access 2007 так же имеет ленту, но работает с VBA 6 На сайте HiProg.com вместо подстановки числовых значений в окончательном варианте предлагают подключать модули с прописанными константами. Тогда не надо всё "вертать у зад" при корректировке. Прикладываю три модуля с константами для Excel, Word и Outlook, взятые с HiProg.com ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2018, 13:01 |
|
|
start [/forum/search_topic.php?author=1007&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
137ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 741ms |
total: | 976ms |
0 / 0 |