|
|
|
| Доброго дня. В ходе выполнения кода у меня перебираются величины из рекордсета и сравниваются их значения, формат данных - двойное с плавающей точкой, два знака после запятой. Код на сравнение простейший
If rs.Fields("fldZ").Value > rs.Fields("fldZmax").Value Then....
Я заметил, что когда величины равные между собой, то условие также срабатывает. Причем проблема не в округлении, я проверил - поставил после выполнения условия msgbox на первое и второе значение, они действительно равные. А условие выполняется! Что за чудеса - не пойму. Я пробовал по другому писать условие, вот так
If (rs.Fields("fldZ").Value - rs.Fields("fldZmax").Value) > 0 Then....
все равно - при равности величин срабатывает также. Пробовал объявлять переменные, загонять в них значение из рекордсета и в условии сравнивать переменные - то же самое. Не встречался ли кто с подобным и как его победить? | |
|
| |
|
|
|
| в общем я решил уже этот вопрос. Написал условие вот таким образом:
If Round((rs.Fields("fldZ").Value * 100)) > Round((rs.Fields("fldZmax").Value * 100)) Then ....
т.е. умножил на сто (два знака после запятой) и округлил. Таким образом сравниваю целочисленные значения, работает нормально. | |
|
| |
|
|
|
| Судя по всему поля у вас точно не Currency и, видимо, разного типа (например Double и Single). | |
|
| |
|