![]() |
Ms Access2002 - The Number Is Too Large. - Версия для печати +- Город Джунов (https://www.gipat.ru/forum) +-- Форум Аддон для Проклятых Земель (https://www.gipat.ru/forum/forum-20.html) +--- Форум Программирование (https://www.gipat.ru/forum/forum-6.html) +--- Темы: Ms Access2002 - The Number Is Too Large. (/thread-1529.html) |
Ms Access2002 - The Number Is Too Large. - Jet - 29.08.2003 [COPYRIGHT] http://www.leadersoft.ru/subscribe/sub/sub33.htm Выпуск 33. Преобразование баз данных Подписка: "Access 2000 - программирование и готовые решения" Автор: Виктор Конюков, Leader Access, LTD Дата: 28.12.2001 Сайт: http://www.leadersoft.ru Почта: support@leadersoft.ru [/COPYRIGHT] Преобразование баз данных Один из часто встречающихся вопросов в конференциях по Access проблемы работы с локальными версиями Access. Например, Вы работаете с русской версией Access 2000, а потом вдруг возникает необходимость запустить базу данных в английской версии AccessXP, вот тут и могут возникнуть "подводные камни". Хотя на первый взгляд база данных хорошо открывается и проблем с объектами нет. Известный "народный" способ лечения, что сначала лучше базу данных разработать в английской версии, а потом уже использовать его в локализованной, не так уж и хорош. С моей точки зрения лучше действовать наоборот. Рассмотрим это на примере небольшой ошибки. Сущность ее. После преобразовании базы данных может возникнуть проблема при открытии таблицы с полями в виде списков (Combobox). Программа предупреждает Вас сообщением: "Слишком большое число" (или "The number is too large"). Сообщение появляется столько раз сколько у Вас определено полей-списков. Исследуя параметры списков, Вы приходите к удивительному выводу, что после преобразования у списков полей таблиц изменился размер. Он стал очень большим 57, 79 см (ListWidth=57,79см), о чем Access и предупреждал Вас при открытии таблицы. Возникает предположение, что программа преобразования просто изменила размер элемента. Но с другой стороны Вы начинаете соображать, что все размеры элементов определяются твипами и следовательно при конвертации к локальной версии таких изменений быть не должно. Используя отладчик (debag), можно придти к выводу, что размер списка поля ColumnWidths действительно не изменился, а отличие заключается лишь в правильном написании свойства поля базы данных. Например, в свойстве ColumnWidths хранится "2450twip" или = "2450твип". И так, если Вы работаете в английской версии и в свойстве поля хранится twip, то размер отображается правильно. Исходя из вышеизложенного можно сделать вывод. Базу данных надо разрабатывать в локальной версии (поиск русских символов в свойствах объектов осуществить проще, чем английских), но при этом надо использовать при разработке названия объектов на английском языке. После того, когда база данных разработана, надо проверить свойства всех элементов базы данных (таблиц, форм, отчетов и т.п.) на наличие русских символов (Ascii код их размещается в диапазоне от 128 до 255). После этого выводите список этих элементов и принимаете решение об их изменении. Например, "твип" заменяете на" twip", "таблица" на "table" и т.п. Задача вывода информации об этих элементах не очень сложная, можно сказать даже тривиальная. Для полного решения ее используйте пример работы со списками. Он указан ниже. Дополнительно в этом примере список еще и корректируется, т.е. его ширина равняется сумме размеров колонок списка. Для преобразования базы данных в английский вариант запустите программу из макроса: fSetTableCombobox("twip"), если необходим русский вариант: fSetTableCombobox("твип") Код: Public Function fSetTableCombobox(strTwip As String, Optional strProgram As String) Ms Access2002 - The Number Is Too Large. - Jet - 29.08.2003 Вот такое решение проблемы нашел в интернете. ![]() Ms Access2002 - The Number Is Too Large. - sun - 29.08.2003 Хороший метод, а если в списке 20 полей, и нужно бы сделать горизонтальный скроллинг раскрывающегося списка? В этой процедуре не хватает максимального значения ширины списка. Вообще, лучше не работать с таблицами напрямую, а работать через запросы, или еще лучше разделить базу данных на две. В одной данные, в другой формы и отчеты. Тогда можно будет восстановить ширину поля. Может в мелкософт подергать? ![]() Ms Access2002 - The Number Is Too Large. - Jet - 29.08.2003 Эта процедура не изменят размеры полей, она просматривает все таблицы и если в свойтвах поля есть ListWidth (Ширина списка), то к его значению прибавляется текст "twip" или "твип" Код: fld.Properties("ListWidth") = Eval(strWidth) & strTwip Цитата:Может в мелкософт подергать?К сожалению, проблема известная, но они не шевелятся. ![]() Видимо заняты подготовокой к релизу Acess 2004. :lol: |