Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема!!! Помогите...
 
 автор: Zahc   (21.10.2009 в 12:34)   личное сообщение
 
 

В базе работают несколько пользователей. У одного из пользователей ошибка 3075, хотя у других сотрудников этот же код выпоняется.
String(2-Len([month]),'0') & [month] - код в VBA
Все используют англ. версию ОС Windows, а сотрудник у которого ругается стоит рус. версия (и еще стоит MS Office 2007, без Access и MS Access 2003). Хотя база писалась на рус. версии ОС Windows на MS Access 2003.
Сначала думал, что библиотек нет. Но проверил, все библиотеки стоят. Теперь думаю, что может все дело в региональных настройках и он ругается на апострафы.
Помогите разобраться!!!
Заранее, очень благодарен ВСЕМ отозвавшимся.

  Ответить  
 
 автор: ДрЮня   (21.10.2009 в 12:40)   личное сообщение
 
 

1)
сравните Региональные настройки на компьютерах.
Когда работают с датами это частый источник ошибок.
2)
посмотреть, что возвращает сие выражение:

String(2-Len([month]),'0') & [month]

  Ответить  
 
 автор: kot_k_k   (21.10.2009 в 12:43)   личное сообщение
 
 

попробуй
String(2-Len([month]),"0") & [month]

или уволить сотрудника.

п.с. а интересный результат получается
[month] - явно строковый
2-Len([month]) - дает отрицательное значение если длина больше 2-х и 0 если =2 возможно тут и поднимается вой.

  Ответить  
 
 автор: Zahc   (21.10.2009 в 12:46)   личное сообщение
 
 

В коде VBA нельзя подставить "" вместо '', ругается.

  Ответить  
 
 автор: Zahc   (21.10.2009 в 12:59)   личное сообщение
 
 

нет! month хранит номер месяца={1, 2, 3, 4, 5, 6, 7 ,8, 9, 10, 11, 12}
Т.е. если month имеет значение до 10, то результат будет {01, 02, 03 и т.д.}, а если больше, то 10, 11 и 12.

month вообще числовое значение.

  Ответить  
 
 автор: Zahc   (21.10.2009 в 12:45)   личное сообщение
 
 

1. Я бы с удовольствием сравнил бы, но сотрудник в Самаре. Я ему пол часа объяснял, как просмотреть используемые библиотеки. Так что сравнить ни как не могу.
2. Ничего не возвращает. Оно вылетает на этой строчке и в сообщение пишет, что не возможно выполнить функцию в выражении запроса.
month - содержит номер месяца, просто надо поставить 01 или 10, а она хранит 1 или 10. Т.е. добавить в начале 0.

  Ответить  
 
 автор: kot_k_k   (21.10.2009 в 12:55)   личное сообщение
 
 

кавычки двойные !!! нормально только что запустил
ui = String(2, "0") & Str_

а
вот на это
ui = String(2, '0') & Str_
однозначно ругается!!!

и если месяц хранится в строковом поле то может нашлась добрая душа и втулила 001, но тогда ошибка рантайм - 5

  Ответить  
 
 автор: Zahc   (21.10.2009 в 13:03)   личное сообщение
 
 

Не, не так все!
Приведеный код написан в VBA, но он подставляется в запрос, так как далее происходит массовое копирование данных по фильтру из одной БД в другую. Например:
Currentdb.Execute "insert into table1 select * from table2 where t_year & Clng(String(2-Len(t_month);'0')) >=200901"

  Ответить  
 
 автор: kot_k_k   (21.10.2009 в 13:10)   личное сообщение
 
 

если Дрюнин вариант не проходит
попробуй
Currentdb.Execute "insert into table1 select * from table2 where t_year & Clng(String(2-Len(t_month)," & chr(34) & "0" & chr(34) & ")) >=200901"

Snipe прав там нужно запятую ставить, у меня ругнулось на ошибку синтаксиса, как только поменял на зпт ругается на отсутсвиет таблы - знач правильно.

  Ответить  
 
 автор: Zahc   (21.10.2009 в 12:55)   личное сообщение
 
 

И еще при открытии формы выдает сообщение: Ошибка 2447! Недопустимое использование '.', '!' или '()' .
Это же из-за региональных настроек? Правильно? Какие надо установить?

  Ответить  
 
 автор: kot_k_k   (21.10.2009 в 12:57)   личное сообщение
 
 

панель управления, Язык и стандарты - закладка "Региональные параметры" -настройка

  Ответить  
 
 автор: Zahc   (21.10.2009 в 13:05)   личное сообщение
 
 

А какие настройки выставить, что бы все работало?

  Ответить  
 
 автор: snipe   (21.10.2009 в 13:06)   личное сообщение
 
 

а где у вас эта формула повешана
случаем не в данных свободного поля
тогда там надо точку с запятой вместо запятой

  Ответить  
 
 автор: ДрЮня   (21.10.2009 в 13:01)   личное сообщение
 
 

попробуйте заменить этот код

String(2-Len([month]),'0') & [month]

на это

Right("00" & [month], 2)

  Ответить  
 
 автор: snipe   (21.10.2009 в 13:22)   личное сообщение
 
 

Попробуйте вот так
dim asd as string
asd=[month]
String(2-Len(asd),"0") & asd

у вас [month] - это число

  Ответить  
 
 автор: Zahc   (21.10.2009 в 13:41)   личное сообщение
 
 

Да число, но это поле в таблице. Там из года и месяца формируется число вида 200901, где 2009 год, 01 месяц

  Ответить  
 
 автор: kot_k_k   (21.10.2009 в 13:44)   личное сообщение
 
 

а почему не делать
Dateserial(год, месяц, день)
даже если строковые поля

Dateserial(Val(год), Val(месяц), Val(день)) если день не важен ставим 1.

  Ответить  
 
 автор: snipe   (21.10.2009 в 13:46)   личное сообщение
 
 

У меня бывало такое ....
функция len работает со строковыми значениями а тут ей пытаются подсунуть число акс не переводит число в строку вот и результат

  Ответить  
 
 автор: Zahc   (21.10.2009 в 13:52)   личное сообщение
 
 

А почему тогда она работает на других компах, на которых стоит анг версия ОС?

  Ответить  
 
 автор: Анатолий (Киев)   (21.10.2009 в 14:35)   личное сообщение
 
 

Я бы сделал проще и надежнее: Format([month], '00')

  Ответить  
 
 автор: Zahc   (22.10.2009 в 10:09)   личное сообщение
 
 

Спасибо всем отозвавшимся!
Ваша информация очень пригодилась!!!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList