|
|
|
| В базе работают несколько пользователей. У одного из пользователей ошибка 3075, хотя у других сотрудников этот же код выпоняется.
String(2-Len([month]),'0') & [month] - код в VBA
Все используют англ. версию ОС Windows, а сотрудник у которого ругается стоит рус. версия (и еще стоит MS Office 2007, без Access и MS Access 2003). Хотя база писалась на рус. версии ОС Windows на MS Access 2003.
Сначала думал, что библиотек нет. Но проверил, все библиотеки стоят. Теперь думаю, что может все дело в региональных настройках и он ругается на апострафы.
Помогите разобраться!!!
Заранее, очень благодарен ВСЕМ отозвавшимся. | |
|
| |
|
|
|
| 1)
сравните Региональные настройки на компьютерах.
Когда работают с датами это частый источник ошибок.
2)
посмотреть, что возвращает сие выражение:
String(2-Len([month]),'0') & [month]
|
| |
|
| |
|
|
|
| попробуй
String(2-Len([month]),"0") & [month]
или уволить сотрудника.
п.с. а интересный результат получается
[month] - явно строковый
2-Len([month]) - дает отрицательное значение если длина больше 2-х и 0 если =2 возможно тут и поднимается вой. | |
|
| |
|
|
|
| В коде VBA нельзя подставить "" вместо '', ругается. | |
|
| |
|
|
|
| нет! month хранит номер месяца={1, 2, 3, 4, 5, 6, 7 ,8, 9, 10, 11, 12}
Т.е. если month имеет значение до 10, то результат будет {01, 02, 03 и т.д.}, а если больше, то 10, 11 и 12.
month вообще числовое значение. | |
|
| |
|
|
|
| 1. Я бы с удовольствием сравнил бы, но сотрудник в Самаре. Я ему пол часа объяснял, как просмотреть используемые библиотеки. Так что сравнить ни как не могу.
2. Ничего не возвращает. Оно вылетает на этой строчке и в сообщение пишет, что не возможно выполнить функцию в выражении запроса.
month - содержит номер месяца, просто надо поставить 01 или 10, а она хранит 1 или 10. Т.е. добавить в начале 0. | |
|
| |
|
|
|
| кавычки двойные !!! нормально только что запустил
ui = String(2, "0") & Str_
а
вот на это
ui = String(2, '0') & Str_
однозначно ругается!!!
и если месяц хранится в строковом поле то может нашлась добрая душа и втулила 001, но тогда ошибка рантайм - 5 | |
|
| |
|
|
|
| Не, не так все!
Приведеный код написан в VBA, но он подставляется в запрос, так как далее происходит массовое копирование данных по фильтру из одной БД в другую. Например:
Currentdb.Execute "insert into table1 select * from table2 where t_year & Clng(String(2-Len(t_month);'0')) >=200901" | |
|
| |
|
|
|
| если Дрюнин вариант не проходит
попробуй
Currentdb.Execute "insert into table1 select * from table2 where t_year & Clng(String(2-Len(t_month)," & chr(34) & "0" & chr(34) & ")) >=200901"
Snipe прав там нужно запятую ставить, у меня ругнулось на ошибку синтаксиса, как только поменял на зпт ругается на отсутсвиет таблы - знач правильно. | |
|
| |
|
|
|
| И еще при открытии формы выдает сообщение: Ошибка 2447! Недопустимое использование '.', '!' или '()' .
Это же из-за региональных настроек? Правильно? Какие надо установить? | |
|
| |
|
|
|
| панель управления, Язык и стандарты - закладка "Региональные параметры" -настройка | |
|
| |
|
|
|
| А какие настройки выставить, что бы все работало? | |
|
| |
|
|
|
| а где у вас эта формула повешана
случаем не в данных свободного поля
тогда там надо точку с запятой вместо запятой | |
|
| |
|
|
|
| попробуйте заменить этот код
String(2-Len([month]),'0') & [month]
|
на это
| |
|
| |
|
|
|
| Попробуйте вот так
dim asd as string
asd=[month]
String(2-Len(asd),"0") & asd
у вас [month] - это число | |
|
| |
|
|
|
| Да число, но это поле в таблице. Там из года и месяца формируется число вида 200901, где 2009 год, 01 месяц | |
|
| |
|
|
|
| а почему не делать
Dateserial(год, месяц, день)
даже если строковые поля
Dateserial(Val(год), Val(месяц), Val(день)) если день не важен ставим 1. | |
|
| |
|
|
|
| У меня бывало такое ....
функция len работает со строковыми значениями а тут ей пытаются подсунуть число акс не переводит число в строку вот и результат | |
|
| |
|
|
|
| А почему тогда она работает на других компах, на которых стоит анг версия ОС? | |
|
| |
|
|
|
| Я бы сделал проще и надежнее: Format([month], '00') | |
|
| |
|
|
|
| Спасибо всем отозвавшимся!
Ваша информация очень пригодилась!!! | |
|
| |