Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Несоответствие типов данных в выраж-и условия отбо


Автор: aldari 7.5.2010, 07:09
 Добрый день, уважаемые форумчане!
 Помогите завершить запрос возвращающий значения первичного ключа потребителей(tbConsumer.coConsumer) расположенных на улице Гагарина в нечетных домах. Номер дома - поле  tbConsumerAlt.sHouse, тип данных - строка

Код

SELECT tbConsumerAlt.coConsumer, VAL(tbConsumerAlt.sHouse)  mod 2
FROM tbStreetAlt RIGHT JOIN tbConsumerAlt ON tbStreetAlt.coStreet = tbConsumerAlt.lcoStreet
WHERE (((tbStreetAlt.sname)=('Гагарина')));


 Надо добаивть что-то типа VAL(tbConsumerAlt.sHouse)  mod 2=1   в WHERE, но ACCESS ругается на несоответствие типов в условии запроса,
 пробывал уже срвнивать и с 1,0  1.0  '1'  "1", пишет "Несоответствие топов данных в условии отбора"

 Оператор Val преобрзует строку в число;
 mod вычисляет остаток от деления первого операнда на второй.

Автор: Akina 7.5.2010, 08:17
Код

SELECT 
       tbConsumerAlt.coConsumer
     , (VAL(tbConsumerAlt.sHouse)  mod 2) as IsOdd

FROM 
           tbStreetAlt 
RIGHT JOIN 
           tbConsumerAlt 
        ON 
           tbStreetAlt.coStreet = tbConsumerAlt.lcoStreet

WHERE 
     (tbStreetAlt.sname='Гагарина')
AND
     ((VAL(tbConsumerAlt.sHouse) mod 2)=1)
;

Автор: aldari 7.5.2010, 08:44
 Я уже пробывал это, ругается "Несоответствие топов данных в условии отбора".

 Задачку можно будет перефразировать так:
 В таблице tbDigit один столбец digit,  тип - текстовый. В таблицу добавляем 1,2,3,4,5. 
 Какой нужно записать запрос чтобы получить 1,3,5 ?

Код

 Select tbDigit.digit
 FROM tbDigit
 WHERE Val(tbDigit.digit) mod 2 = ??
 

 Что нужно поставить вместо вопросительных знаков?

Автор: Akina 7.5.2010, 08:48
http://forum.vingrad.ru/forum/topic-260944.html

Добавлено через 36 секунд
Цитата(aldari @  7.5.2010,  09:44 Найти цитируемый пост)
Что нужно поставить вместо вопросительных знаков? 

Разуй глазки! скобки надо поставить!

Автор: aldari 13.5.2010, 12:26
  
   Спасибо за помощь.
 Написал в пятницу программу с помощью нее все сделал.
 Причина из-за которой не работал запрос: в поле "номер дома" в нескольких записях были буквы (напр. № дома -- 5а) или было пустое поле.  Странно что Val не отсеял букву.

 спасибо.

Автор: Akina 13.5.2010, 12:32
Цитата(aldari @  13.5.2010,  13:26 Найти цитируемый пост)
Странно что Val не отсеял букву

Этого не может быть.

Цитата(aldari @  13.5.2010,  13:26 Найти цитируемый пост)
или было пустое поле

NZ()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)