Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

загвоздка в Вычисляемом поле с денежным форматом

2.1K
10 декабря 2008 года
FreeWay
142 / / 03.05.2007
Всем привет!!!
БД Ацесс, доступ через АДО
Наткнулся на проблемку.
У меня есть вычисляемое поле:
 
Код:
void __fastcall TMain::ADOQueryAddCalcFields(TDataSet *DataSet)
{
ADOQueryAddSumma->Value=ADOQueryAddWeight->Value*ADOQueryAddPrice->Value;
}

ADOQueryAddWeight - тип данных числовое с плавающей точкой, колличество знаков после запятой - 3
ADOQueryAddPrice - тип данных числовое с плавающей точкой, колличество знаков после запятой - 2

все было нормуль, пока мне не попался такой вес в поле ADOQueryAddWeight:
0,001 - при умножении на цену (допустим 3 ) я получаю - 0,00
на калькуляторе - 0,003
Естественно это мне не подходит, обследовав свойства вычисляемой колонки, не нашел что либо в чем можно было указать разрядность, подскажи что в моем случае сделать, и еще в этой вычисляемой колонке автоматом выставляется р. то есть прога думает что это денежный формат, р. мне там и даром не нужно((
315
10 декабря 2008 года
Nick_M
399 / / 29.05.2003
А тип ADOQueryAddSumma случайно не денежный?
2.1K
10 декабря 2008 года
FreeWay
142 / / 03.05.2007
Цитата: Nick_M
А тип ADOQueryAddSumma случайно не денежный?



я не указывал никакого типа, просто добавил в грид колонку, в свойствах колонки нет типов (в инспекторе)

подсказали что надо юзать DisplayFormat
только не знаю его синтаксис и в каком месте устанавливать

315
10 декабря 2008 года
Nick_M
399 / / 29.05.2003
Цитата: FreeWay
я не указывал никакого типа, просто добавил в грид колонку, в свойствах колонки нет типов (в инспекторе)

подсказали что надо юзать DisplayFormat
только не знаю его синтаксис и в каком месте устанавливать



Каждое поле таблицы базы данных имеет свой тип. Он задается не на уровне приложения, а на уровне БД. Таким образом если у поля, за которое отвечает ADOQueryAddSumma, тип "денежный", то получаем во-первых эту букву "р.", а во-вторых происходит округление результата выражения ADOQueryAddWeight->Value*ADOQueryAddPrice->Value до копеек. Т.е. до двух знаков после запятой: 0,003 -> 0,00

2.1K
11 декабря 2008 года
FreeWay
142 / / 03.05.2007
Цитата: Nick_M
Каждое поле таблицы базы данных имеет свой тип. Он задается не на уровне приложения, а на уровне БД. Таким образом если у поля, за которое отвечает ADOQueryAddSumma, тип "денежный", то получаем во-первых эту букву "р.", а во-вторых происходит округление результата выражения ADOQueryAddWeight->Value*ADOQueryAddPrice->Value до копеек. Т.е. до двух знаков после запятой: 0,003 -> 0,00



те есть какие я исходные форматы колонок лдя вычисления использую, в таком формате я и получу результат, я правильно понял? Но поле цена и вес у меня не денежное, а числовое ((

315
11 декабря 2008 года
Nick_M
399 / / 29.05.2003
Цитата: FreeWay
те есть какие я исходные форматы колонок лдя вычисления использую, в таком формате я и получу результат, я правильно понял? Но поле цена и вес у меня не денежное, а числовое ((



Нет. В каком формате поле результата (ADOQueryAddSumma), к тому и будет преобразование. Или ADOQueryAddSumma ни с каким полем в таблице базы данных не связанно?

2.1K
11 декабря 2008 года
FreeWay
142 / / 03.05.2007
Цитата: Nick_M
Нет. В каком формате поле результата (ADOQueryAddSumma), к тому и будет преобразование. Или ADOQueryAddSumma ни с каким полем в таблице базы данных не связанно?



нет конечно - не связано, это же вычисляемое поле... оно создается динамически как результат умножения двух вышеупомянутых колонок

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог