Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

Проблема с ADOQuery   Найти похожие ветки 

 
igor666 ©   (2006-11-08 10:49) [0]

Проблема вот в чём, в АДОКвери генерится запрос (в запросе используются хранимы процедуры, которые в зависимости от данных в БД генерят различное кол-во полей для вывода, поэтому заранее я не могу знать сколько полей будет выведено в запросе). Так вот, в БД имеются поля типа decimal(18,5), т.е. 5 знаков после запятой, а кверя во время выборки присваивает им тип TBCD, который не выводит больше 4х знаков после запятой, а мне важно именно 5 знаков!!!. Подскажите плз как этого можно избежать, как вдрать 5 знаков из БД?

Спасибо.


 
Stanislav ©   (2006-11-08 10:55) [1]

Я удалял эти поля в Query, и пересоздавал их как Float. Только делал это в конструкторе программно не приходилось.


 
igor666 ©   (2006-11-08 10:59) [2]

В том то и дело что в конструкторе это не проблема, но я же писал что кол-во полей динамическое и названия их тоже, поэтому в конструкторе я просто этого сделать не могу. А стандартная процедура TField.SetDataType() - в дэлфи просто пустая, её либо забыли написать, либо просто шутки у борланда такие, в модуле просто begin end и всё :), а между ними пусто.


 
Stanislav ©   (2006-11-08 11:14) [3]

В запросе преобразовывой в float.


 
sniknik ©   (2006-11-08 11:31) [4]

> в модуле просто begin end и всё :),
ага, шутки, и главная шутка в слове abstract в описании.  
и ты не туда смотришь, в моем дельфи SetDataType с одной строчкой внутри
procedure TField.SetDataType(Value: TFieldType);
begin
 FDataType := Value;
end;
 

> decimal(18,5)
этого многие уже не поддерживают, но тип TBCD имеет до 99 знаков после запятой... другое дело что в дельфе приведение идет через currency у которого действительно 4 знака после запятой (вернее это вообще целочисленный тип, просто принили что 4 разряда под дробь).
так что ADOQuery тут не причем (как бы не нелюбил я его но справедливость дороже ;о)), это дельфя, если хочеш можеш попробовать сделать приведение сам, дабавить свой метод asBcd, без этого недостатка (currency).


 
igor666 ©   (2006-11-08 12:09) [5]

мдя, прийдётся занчит везде в запросе CAST добавлять и конвертить во float, спасибо всем


 
igor666 ©   (2006-11-08 12:11) [6]

кстати, а на счёт SetDataType у меня он действительно пустым был, теперь поставил FDataType := Value; :)


 
igor666 ©   (2006-11-09 13:52) [7]

Всё оказалось намного проще, в ADO есть свойство EnableBCD, если его поставить в false, то всё конвертится без проблем и все знаки после запятой сохраняются :))


 
sniknik ©   (2006-11-09 14:05) [8]

> если его поставить в false
то конвертация идет не через currency а через float (что тоже плохо для денежных данных. т.к. тип с плавающей точкой)



Страницы: 1 вся ветка

Текущий архив: 2007.02.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
6-1156956528
Homa_Programer
2006-08-30 20:48
2007.02.04
Ip, mac и сетевое имя компьютера


4-1158843366
GanibalLector
2006-09-21 16:56
2007.02.04
Передача строки из доп.потока с основной


2-1168871590
SadMan
2007-01-15 17:33
2007.02.04
Как обратится к свойствам объекта зная его имя? Глупо как то..


15-1168885719
ferr
2007-01-15 21:28
2007.02.04
The Doors. Фильм Оливера Стоуна.


15-1168851686
vitv
2007-01-15 12:01
2007.02.04
Удаление файлов без восстановления.