powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / На одних компьютерах программа работает, на других - нет.
25 сообщений из 46, страница 1 из 2
На одних компьютерах программа работает, на других - нет.
    #39385901
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следующая ситуация.

В прошлом году, летом была реорганизация предприятия. Наш отдел был передан другой организации. Сменилось место работы, компьютеры, программы.
Вот что оказалось у меня на новом месте.

На сервере стоит Windows 7 64 bit, Office 2010 32 bit и Office 2003
У меня на компьютере стоит Windows 7 32 bit, Office 2010 32 bit и Office 2003

Первоначально всё работало нормально. Потом после какого-то обновления произошла следующая история. Программа разработанная на моём компьютере отказывается работать на сервере. Выдаёт сообщение типа "Ошибка в запросе. Должно быть INSERT, UPDATE или DELETE" не дословно, но смысл похожий. Делаешь сжатие-восстановление, программа начинает работать на сервере. Зато перестаёт работать на моём компьютере. С тем же сообщением. Делаю уже у себя сжатие-восстановление, программа начинает работать у меня, но прекращает на сервере. Системщик только разводит руками и что-то говорит о разных обновлениях. По моему настоянию с сервера снесли оба офиса и установили Office 2010 32 bit заново. Ошибка ушла.

Примерно через три месяца, после очередных обновлений, похожая ситуация всплыла у заказчиков, которым рассылались новые версии программы. У части заказчиков программа отказывалась работать с аналогичным сообщением. Причём на работе и у меня дома программа она запускалась без проблем. По моей инструкции пользователи на местах произвели сжатие-восстановление программы. У части она заработала, а у части - нет.

Что сделал. Дома под Windows XP в Access 2003 произвёл декомпиляцию программы. Затем поджал её. Программа заработала и на тех машинах, где раньше отказывалась работать.

Кто-нибудь встречался с такими проблемами? Как их решали? И что надо делать, чтоб их избежать?

-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39385907
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понимаю, что под словом "программа" тут разумеется обычная БД в формате MDB?
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39385915
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что за сервер? Если база Access только оболочка, проверьте DISTINCTROW в запросах. Система должна решить, что исполнять клиенту, а что серверу. Нужно смотреть текст запросов где происходит ошибка.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39385919
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнительная информация.
Программа сделана в формате Access 2000, mdb. Запускалась на Access с 2000 до 2016.
ActiveX не используется, API используется. Программа разрабатывалась и работает в 32-х и 64-х разрядных офисах. И до нашего переезда никаких проблем не возникало. Вот только на старом месте в качестве операционки стояла Windows XP.

Статистику набрать к сожалению не могу Во многих местах в качестве операторов сидят пожилые женщины, которые не могут сказать, что у них за операционка и какая версия офиса.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39385940
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения. Ошибся. На сервере стоит операционка Windows Server 2008 R2 SP1 64 бит.

Программа представляет собой разделённую базу в формате MDB. Один файл с кодом, другой - с данными. Нужно поместить их в один каталог в любом разрешенном месте. Автоматически подключаются таблица и начинается работа.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39385966
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Сделайте резервную копию.
2. Декомпилируйте базу, сожмите, закройте. Откройте, скомпилируйте, сожмите, закройте. Сделайте защищенный MDE файл. Он должен копироваться в VBA.Environ("TEMP") пользователя. Именно с ним он должен работать.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39385995
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это надо делать на каждом рабочем месте. Там где не работает программа. Сейчас таких пользователей 6-8. Но у меня могут быть неточные сведения. Часть информации до меня могла просто не дойти. Всего пользователей более 80. Т.е в среднем на одном из 9-10 компьютеров такая неприятность. Некоторые находятся на расстоянии 300-400 км, некоторые ещё далее. Ездить по пользователям - не выход.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386015
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователи должны работать на терминальном сервере, куда заходят через удаленный доступ. При подключении выполняется start.cmd
@copy db.mde %TEMP% /y
@start "C:\Program Files\Microsoft Office\Office15\msaccess.exe" %TEMP%/db.mde
@exit
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386220
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не путайте то что делаете для своей организации и то, что рассылается сторонним пользователям. Какой терминальный сервер? Какой удалённый доступ? Вы о чём? Не везде и Access стоит. Не везде даже системщики свои есть.

Работа с программой должна быть максимально проста. Разархивируй на диск и работай.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386296
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,

Свои пять копеек.
Делал проги, рассылал клиентам. И постоянно ловил таких аналогичных "Барабашек", пока не привёл всех к единому стандарту. А именно рантайм 2007. Иначе идут конфликты библиотек "и всё такое прочее".
На крайний случай, если народ не хочет/не умеет удалять из своих Офисов компонент Access, рекомендую ставить одновременно рантайм 2007 и цеплять на ярлычок запуска программы её запуск именно из под рантайма.
Под рантайм, кста, отлично идёт и mdb, и mde.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386302
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и иногда проблемы запуска у клиентов совсем по другим причинам: маниакальный уровень настройки антивирусов, урезанные права юзеров в Винде, плюс сам Офис порой согласно установленному уровню безопасности считает запуск проги недопустимым ;)
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386473
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошие пожелания так и останутся пожеланиями. У одних стоит лицензитя, у других - пиратка, У одних 32 бит, у других - 64. У одних 2003, у других - 2013. И ничего изменить нельзя. Это не наши подразделения. Не они хотят взять у нас программу, а мы просим, чтоб они у нас её взяли. Вот такие дела.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386483
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, так я не зря упомянул про Рантайм 2007, установленный параллельно. Ну и в ялыке запуска вашего приложения, в "Ярлык" - в поле "Объект" вставить строку принудительного запуска приложения Рантаймом, что то типа
"C:\Program Files (x86)\Microsoft Office\Office12\msaccess.exe" "C:\Каталог\ИмяПроги.mdb"
Только уточнить надо где именно лежит файл запуска рантайма, лень искать.
Вот, к слову, похожее здесь же обсуждалось:
http://www.sql.ru/forum/1235622/access-runtime-sovmestimost?hl=runtime
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386639
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри написанное выше. Никто лишних телодвижений делать не будет. Никто не будет скачивать рантайм и ставить его параллельно уже стоящему Access. Тем более 32-х и 64-х версии Access несовместимы. Это по официальной информации от Микрософта. Хотя я ухитрялся запускать и работать в портабле версии Офиса 2003 при параллельно установленном Офисе 2010 64 бит.

Пока решил следующее. После отладки программы нести её домой. Там под ХР на 2003 декомпилировать и сжимать без компиляции и рассылать в таком виде.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386672
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте так:
#If VBA7 Then
Public Declare PtrSafe Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (pwszKLID As Any) As Long
Public Declare PtrSafe Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal HKL As String, ByVal Flags As Long) As Long

#Else
Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (pwszKLID As Any) As Long
Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal HKL As String, ByVal Flags As Long) As Long

#End If
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386716
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulBПопробуйте так:
#If VBA7 Then
Public Declare PtrSafe Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (pwszKLID As Any) As Long
Public Declare PtrSafe Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal HKL As String, ByVal Flags As Long) As Long

#Else
Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (pwszKLID As Any) As Long
Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal HKL As String, ByVal Flags As Long) As Long

#End If
Извините, я не понял к чему это? Можете пояснить?
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386771
PaulB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы написали об использовании API. Что бы это работало под разными версиями Access используйте условную компиляцию
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386785
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,
А вы пытались понять, почему именно возникает ошибка? Код под отладкой смотрели? Сжатие может влиять на некоторые вещи, но возможно, основная ошибка именно в коде или в данных. Например, могли возникнуть битые строки в таблице, из-за чего код работает вообще непонятно как.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386788
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое сообщение об ошибке обычно выдается, когда программа пытается выполнить неверный запрос, который даже не начинается с INSERT, UPDATE или DELETE
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39386965
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss, ну, идти на поводу у ленивых клиентов тоже нужно и можно до каких то определённых пределов. Практика показывает, что сами потом крайним останетесь ;)
По поводу "32-х и 64-х версии Access". А при чём тут разрядность, если вы запускаете прогу из под Рантайма, фактически - из под независимой отдельной копии Access? Эта такая штука, как я успел убедиться - отлично бегает хоть на XP, хоть на 10-ке. Проверял сам лично на XP, XP/64, 2003 Server, 7/32, 7/64, 8.1, юзеры пишут - что и на 10-ке полёт нормальный.
Кроме того, я говорил, что могут иметь место факторы "вне самого Access".
То, что "никто не будет ничего делать" -
а) не факт, но допустим
б) Сделайте это "сами": вышлите в инсталляхе тот же Рантайм, прикрутите батничек на разовую установку и вуаля.
Можно даже сделать достаточно полноценный инсталлятор, например, при помощи InnoSetup. Тогда клиент запускает одну инсталляшку.
Ну, через удалённый доступ можете зайти к клиенту, сами настроить - если это важно. Иногда и мне приходится так делать - это проще и быстрее.
В общем, я бы тут проблему разделил на две части:
1. Проверить на практике сам принцип и возможность решения проблемы косяков с помощью рантаймов. Думается мне, что это проще и быстрее сделать именно на практике, чем гадать и теоретизировать до бесконечности ;)
2. Способ установки необходимого комплекта на комп юзерам. Тут уже варианты на ваш выбор.
Разумеется, я не смею настаивать - в конце концов, это у вас проблема, и варианты поиска решений - тоже у вас.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39387369
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы, постараюсь ответить каждому.

to PaulB

У меня всё это сделано в программе, и как я писал выше она прекрасно работает на всех версиях Офиса от 2000 до 2016 и на 32-х и 64-х битных версиях. Всё дело в том, что на 9 компьютерах из 10 программа запускается, а на десятом - нет. Причём это не связано ни с версией офиса, ни с его разрядностью.

to MrShin

авторА вы пытались понять, почему именно возникает ошибка? Код под отладкой смотрели? Сжатие может влиять на некоторые вещи, но возможно, основная ошибка именно в коде или в данных. Например, могли возникнуть битые строки в таблице, из-за чего код работает вообще непонятно как.
Ошибка возникает до первой точки останова. Ставишь точку останова в самом первом выполняемом операторе. Ошибка возникает до неё. Ни данные, ни код не испорчен. Берёшь работающую программу, ставишь на проблемный компьютер - не работает. Ставишь на исходный - работает. Проблема на работе была решена сносом офиса и повторной установкой.

авторТакое сообщение об ошибке обычно выдается, когда программа пытается выполнить неверный запрос, который даже не начинается с INSERT, UPDATE или DELETE
Это ясно, но это не тот случай. Ведь на части компьютеров программа прекрасно работает с теми же данными.

to Tarasios

авторJoss, ну, идти на поводу у ленивых клиентов тоже нужно и можно до каких то определённых пределов. Практика показывает, что сами потом крайним останетесь ;)
По поводу "32-х и 64-х версии Access". А при чём тут разрядность, если вы запускаете прогу из под Рантайма, фактически - из под независимой отдельной копии Access? Эта такая штука, как я успел убедиться - отлично бегает хоть на XP, хоть на 10-ке. Проверял сам лично на XP, XP/64, 2003 Server, 7/32, 7/64, 8.1, юзеры пишут - что и на 10-ке полёт нормальный.
Кроме того, я говорил, что могут иметь место факторы "вне самого Access".
То, что "никто не будет ничего делать" -
а) не факт, но допустим
б) Сделайте это "сами": вышлите в инсталляхе тот же Рантайм, прикрутите батничек на разовую установку и вуаля.
Можно даже сделать достаточно полноценный инсталлятор, например, при помощи InnoSetup. Тогда клиент запускает одну инсталляшку.
Ну, через удалённый доступ можете зайти к клиенту, сами настроить - если это важно. Иногда и мне приходится так делать - это проще и быстрее.
В общем, я бы тут проблему разделил на две части:
1. Проверить на практике сам принцип и возможность решения проблемы косяков с помощью рантаймов. Думается мне, что это проще и быстрее сделать именно на практике, чем гадать и теоретизировать до бесконечности ;)
2. Способ установки необходимого комплекта на комп юзерам. Тут уже варианты на ваш выбор.
Разумеется, я не смею настаивать - в конце концов, это у вас проблема, и варианты поиска решений - тоже у вас. Тут придётся отвечать последовательно.

На счёт пользователей. Наша организация собирает анкеты определённой формы отчётности. Их можно представить как бумажный документ. Ну или в том модуле, что я разработал. Вся эта информация сливается в общую базу данных. Ввод данных из модуля автоматизирован., бумажные документы вводятся вручную. Если программа не понравится пользователям, они могут отсылать анкеты на бумаге и тогда мы тут будем корячиться и вводить данные с бумажных анкет. Анкеты собираются каждый квартал. И каждый раз рассылается новый модуль с новыми данными. Нельзя один раз поставить модуль и постоянно им пользоваться.

На счёт рантайма. Смотри написанное выше. Никто лишних телодвижений делать не будет. Никто не будет скачивать рантайм и ставить его параллельно уже стоящему Access. Тем более 32-х и 64-х версии Access несовместимы. Это по официальной информации от Микрософта.

Как я писал, Во многих организациях нет даже штатного системщика. Иногда даже звонят и спрашивают, как надо разархивировать. Вчера звонили и заявляли, что никак не могут прикрепить отчёт к письму. А возиться с установкой и деинсталяцией Access никто не будет. Тем более что гарантию, что всё заработает я дать не могу.

Единственное, до чего я додумался. Создать bat или cmd файл на декомпиляцию и последующее сжатие базы. И рассылать такой файл вместе с модулем, с указанием, что если возникнет такая ошибка, то запустить этот файл. Это в 99,9% случаев срабатывает. Но как написать такой файл я пока без понятия. Надо указать путь к Access, путь к обрабатываемому файлу. А я пока с этим не разобрался. Ну не писал я раньше такие файлы. Может кто-нибудь подскажет, как это сделать?
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39387920
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss,
ну вообще то, само сжатие можно навесить на прогу, например, при каждом выходе из программы.
Сами же DOS команды и основы создания тех же батников неимоверно просты, есть в инетах куча примеров и буквально за час вы "проникнетесь". Хотя опять же здесь всё упирается в точные координаты файла access.exe, а они в разных версиях разные ;)
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39387924
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, это по вашей теме:
http://www.sql.ru/forum/143018/szhatie-i-vosstanovlenie-bd-iz-komandnoy-stroki
http://www.sql.ru/faq/faq_topic.aspx?fid=155

Хотя вот лично мне бы (при условии что это больше нужно мне, а не клиентам) было бы удобнее и быстрее "вылечить" клиента по удалёнке, например - через тимвивер. Практика показывает, что даже самые "деревянные" клиенты почти без проблем могут её у себя запустить и назвать мне (мылом, аське или по телефону) айди и пароль. Тем более, что существует модуль тимвивера, не требующий инсталляции у клиента.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39388121
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TarasiosJoss,
ну вообще то, само сжатие можно навесить на прогу, например, при каждом выходе из программы.
Сами же DOS команды и основы создания тех же батников неимоверно просты, есть в инетах куча примеров и буквально за час вы "проникнетесь". Хотя опять же здесь всё упирается в точные координаты файла access.exe, а они в разных версиях разные ;)

Проблема в том, что компакт не помогает. Помогает декомпиляция программы. А она запускается только из командной строки (я других способов не знаю). А для неё надо задавать полный путь к декомпилируемому файлу.

Простые батники я писал: создание/удаление каталогов, файлов, перемещение по каталогам. А вот такого типа - нет.
...
Рейтинг: 0 / 0
На одних компьютерах программа работает, на других - нет.
    #39388136
MS Access VBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss, зачем вы пытаетесь сделать батник, не имея опыта, если прекрасно знаете среду MS Access и VBA?

Создайте аксесовскую утилитку, в которой покажите красивую формочку с рюшками, определите где расположен екзешник access (можно через SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"), запустите шелом с командной строкой /декомпайл вашу основную базу и т.п.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / На одних компьютерах программа работает, на других - нет.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]