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

Форум: MS ACCESS

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

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

 
 

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

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

тема: сравнение чисел (< обрабатывается как <=) access 2003
 
 автор: hellrider   (19.09.2007 в 13:17)   личное сообщение
 
 

Доброго дня. В ходе выполнения кода у меня перебираются величины из рекордсета и сравниваются их значения, формат данных - двойное с плавающей точкой, два знака после запятой. Код на сравнение простейший

If rs.Fields("fldZ").Value > rs.Fields("fldZmax").Value Then....

Я заметил, что когда величины равные между собой, то условие также срабатывает. Причем проблема не в округлении, я проверил - поставил после выполнения условия msgbox на первое и второе значение, они действительно равные. А условие выполняется! Что за чудеса - не пойму. Я пробовал по другому писать условие, вот так

If (rs.Fields("fldZ").Value - rs.Fields("fldZmax").Value) > 0 Then....

все равно - при равности величин срабатывает также. Пробовал объявлять переменные, загонять в них значение из рекордсета и в условии сравнивать переменные - то же самое. Не встречался ли кто с подобным и как его победить?

  Ответить  
 
 автор: hellrider   (19.09.2007 в 13:38)   личное сообщение
 
 

в общем я решил уже этот вопрос. Написал условие вот таким образом:

If Round((rs.Fields("fldZ").Value * 100)) > Round((rs.Fields("fldZmax").Value * 100)) Then ....

т.е. умножил на сто (два знака после запятой) и округлил. Таким образом сравниваю целочисленные значения, работает нормально.

  Ответить  
 
 автор: Анатолий (Киев)   (19.09.2007 в 19:24)   личное сообщение
 
 

Судя по всему поля у вас точно не Currency и, видимо, разного типа (например Double и Single).

  Ответить  
 
 автор: hellrider   (21.09.2007 в 12:33)   личное сообщение
 
 

нет, Double оба поля

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