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

Форум: MS ACCESS

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

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

 
 

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

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

тема: В одном случае нет ошибки преобразования данных, в другом - есть.
 
 автор: ReStart   (10.09.2007 в 12:45)   личное сообщение
 
 

Добрый День! Есть вычисляемое поле КомН. Мне оно нужно текстовым.
Поля ОбщКолКом и КолКом - числовые.
Подскажите, пожалуйста" почему в этом варианте все нормально проходит.
КомН: IIf([ОбщКолКом]>1 And [КолКомнат]=1;"77"; [КолКомнат])

А в этом варианте - чуть более сложный IIf - возникает ошибка преобразования типа данных
КомН: IIf([ОбщКолКом]>1 And [КолКомнат]=1;"77";IIf(([ОбщКолКом]=0 And ([КолКомнат]=1 Or [КолКомнат]=2 Or [КолКомнат]=3));[КолКомнат];">3"))

  Ответить  
 
 автор: Силыч   (10.09.2007 в 13:45)   личное сообщение
 
 

значит таки возникает ошибка преобразования типа

  Ответить  
 
 автор: ReStart   (10.09.2007 в 14:27)   личное сообщение
 
 

Вот и я уже думаю, принять это как данность что ли...
А с другой стороны, как говорил Гамлет: "Достойно ли смиряться под ударами судьбы, Иль надо оказать сопротивленье?..."

  Ответить  
 
 автор: ГлазастыйМышь   (11.09.2007 в 07:34)   личное сообщение
 
 

а где используете это выражение, мож формат поля описан как числовой, а ифф возвращает текст

  Ответить  
 
 автор: Силыч   (11.09.2007 в 09:33)   личное сообщение
 
 

[покашливая/попёрдывая/покряхтывая] насколько я помню [/покашливая/попёрдывая/покряхтывая]
iif в аксессе, раньше, не знаю как сейчас, никогда не шел по ветке "если условие, то выполнить 1 иначе выполнить 2". он сразу отрабатывает все варианты и 1 и 2 и уже потом выбирает то, которое удовлетворяет условию. приведите все к одному типу. в iifе всмысли.

  Ответить  
 
 автор: Анатолий (Киев)   (11.09.2007 в 09:32)   личное сообщение
 
 

Я создал таблицу с 2-мя числовыми полями и построил запрос с вычисляемым полем на базе вашей формулы. РАБОТАЕТ! У меня А2000, а у вас? Это поле у вас в запросе или в форме? Поля, участвующие в выражении - числовые поля из таблицы, или свободные поля в форме?
Попробуйте так:
IIf([ОбщКолКом]>1 And [КолКомнат]=1;"77";IIf([ОбщКолКом]=0 And [КолКомнат] In (1;2;3);[КолКомнат] & "";">3"))

  Ответить  
 
 автор: ReStart   (19.09.2007 в 10:19)   личное сообщение
 
 

Спасибо всем за ответы! Было сделано так:
IIf([ОбщКолКом]>1 And [КолКомнат]=1;'77';IIf(([ОбщКолКом]=0 And ([КолКомнат]=1 Or [КолКомнат]=2 Or [КолКомнат]=3));nz([КолКомнат];'');'>3')). Это использовалось в запросе на добавление.
Вообще мне подсказали следующую вещь (хотя, может для вас это не будет открытием, а для меня явилось решением очень многих проблем) касательно запросов на добавление: перед тем как выполнить сложный запрос на добавление, сначала можно преобразовать его в запрос на выборку, выполнить его и посмотреть результат. В тех полях, где есть некорректность, видно слово "ошибка". Это дает возможность понять, что происходит.
Вот может поможет кому...

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