Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

немецкая программа MS Access в русском окружении

204  
Mmmaloy свой человек03.11.09 09:21
Mmmaloy
NEW 03.11.09 09:21 
Привет всем, проблема следующего харакера.
Есть приложение на MS Access, написаное в полностью немецком окружении (OS, MS Access de) и использованием некоторых ActiveX компонентов.
Понадобилось запустить это приложение на русской винде. Программа не запускается при установленной поддержке неюникодных программ русский (Панель управления-> язык и региональные стандарты-> дополнительно -> русский): Ошибка #2501, прервано выполнение комманды OpenForm.
Если в указанных настройках установлен английский, то программа запускается, но этот вариант недопустим, т.к. другие некоторые программы не работают с этой установкой.
После ковыряний обнаружил, что ошибка возникает даже тогда, когда в методе Open_Form открываемой формы не было совершенно никакого кода. А вот сам метод удаляется, форма показывается.
В чем может быть проблема, как ее можно решить, не меняя установок в региональных установок?
PS: Я не программировал эту программу, и вообще мои познания Access поверхностные
#1 
Mmmaloy свой человек03.11.09 09:35
Mmmaloy
NEW 03.11.09 09:35 
в ответ Mmmaloy 03.11.09 09:21
Добавлю, что при возникновении любых событий формы (например нажатие кнопок) возникает ошибка "Выражение Нажатие кнопки, введенное в поле свойства события вызывает ошибку: Возникла ошибка при установлении связи в приложении ХХХ с сервером OLE или элементом управления ActiveX "

#2 
toptop местный житель03.11.09 09:47
NEW 03.11.09 09:47 
в ответ Mmmaloy 03.11.09 09:21
Про какой Access хоть речь идёт?
Я бы попытался в русском окружении откомпилировать код и посмотреть на ошибки, после этого будет ясно насколько много переделывать (например, умляюты в именах функций и переменных) Программисты Access и вообще VBA - это самые коварные программисты, такое иногда придумают.
#3 
Mmmaloy свой человек03.11.09 09:53
Mmmaloy
NEW 03.11.09 09:53 
в ответ toptop 03.11.09 09:47
В данном случае идет речь о 2003 версии, хотя программа сартует и с более поздними программами
Программу компилирую в русском окружении - 0 ошибок,
Данную форму на предемет умлаутов проработал, все поудалял/закоментировал.
По всей видимомсти рантайм не может связать события формы с кодом. Как лечить не знаю.
#4 
Murr коренной житель03.11.09 11:42
Murr
NEW 03.11.09 11:42 
в ответ Mmmaloy 03.11.09 09:35
"Выражение Нажатие кнопки, введенное в поле свойства события вызывает ошибку: Возникла ошибка при установлении связи в приложении ХХХ с сервером OLE или элементом управления ActiveX "
-----
Судя по описанию на форме лежит какой-то компонент, который определен как ActiveX, идля которого есть разница в определении для русской и немецкой версий. Что именно "не то" - надо смотреть по коду... хотя это - Access - в нем может быть много работающего не тривиально...
#5 
Mmmaloy свой человек03.11.09 13:06
Mmmaloy
NEW 03.11.09 13:06 
в ответ Murr 03.11.09 11:42
Я тоже так серва подумал, просмотрел все компоненты лежащие на форме - все стандартные. Форма простецкая login: поля для ввода пользователя с паролем, кнопки - ok, cancel, парочка полей со списком.
#6 
Murr коренной житель03.11.09 13:26
Murr
NEW 03.11.09 13:26 
в ответ Mmmaloy 03.11.09 13:06
Форма простецкая
-----
Пересоздай и подвяжи обработчики - работы на пару минут...
Эээ... как вариант - не было ли включено что-нибудь типа локализации при создании формы? Хотя... ты уже сказал, что не писал этого... Можно посмотреть в системных таблицах базы что за язык выбран для формы - чтобы работало везде должен быть какой-то из нейтральных англиских...
#7 
Mmmaloy свой человек03.11.09 15:05
Mmmaloy
NEW 03.11.09 15:05 
в ответ Murr 03.11.09 13:26
Пересоздай и подвяжи обработчики - работы на пару минут...
---
На самом деле форм очень много, что бы их все пересоздавать
Можно посмотреть в системных таблицах базы что за язык выбран для формы - чтобы работало везде должен быть какой-то из нейтральных англиских...
---
Какая имено таблица, не могу найти
#8 
Murr коренной житель03.11.09 15:30
Murr
03.11.09 15:30 
в ответ Mmmaloy 03.11.09 15:05
не могу найти
-----
Увы - Аксесса под руками нет, а на память не помню - лет 5 не копался в нем...
#9 
toptop местный житель03.11.09 16:39
NEW 03.11.09 16:39 
в ответ Mmmaloy 03.11.09 09:53
Думаю, что еще и Verweis на какую-то DLL или ActiveX может стопорить. Посмотрите, на какие библиотеки ссылается код, среди них скорее всего языкозависимые компоненты.
#10 
toptop местный житель03.11.09 16:47
NEW 03.11.09 16:47 
в ответ Murr 03.11.09 15:30
В 2003 и предыдущих это системная таблица MSysObjects. Но вначале нужно разрешить показывать системные объекты, а вот чего связанного с языками там в упор не помню, может в 2007 добавили?
Давным-давно пытались апликуху 97 немецкого Access на английской винде запустить, она напрочь не компилировалась. Сейчас-то хоть компилируется и то прогресс.
#11 
Murr коренной житель03.11.09 22:43
Murr
NEW 03.11.09 22:43 
в ответ toptop 03.11.09 16:47
а вот чего связанного с языками там в упор не помню
-----'
Эээ... если Я правильно помню, то там форма хранится как локализованный ресурс.
Как именно - не смотрел очень давно... со времен Аксесс'95. Более поздние версии
пользовал исключительно как фронт для MS SQL баз - в мемо поля показываются
нормальным текстом...
#12 
toptop местный житель04.11.09 10:16
NEW 04.11.09 10:16 
в ответ Mmmaloy 03.11.09 09:53
Да, еще можно попробовать Microsoft AppLocale Utility. Она, по сообщениям производителя, позволяет запустить программу с отличными от операционки языковыми настройками. Правда, она для XP и 2003, но, кажется, что-то было и для висты. Я пробовал русские программы без юникода на немецкой винде. Как наоборот будет не знаю. Опять же не помню, как там с параметрами. Надо же Access с именем базы в качестве параметра запустить.
Удачи.
#13 
Mmmaloy свой человек04.11.09 16:14
Mmmaloy
NEW 04.11.09 16:14 
в ответ toptop 04.11.09 10:16
AppLocale не помогло.
А вообще всем спасибо за помощь,
решение проблемы откладывается на неопределенный срок.
#14