Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.059 c
15-1168798383
AgSmit
2007-01-14 21:13
2007.02.04
Зависает сервер...


1-1165928238
BOB16
2006-12-12 15:57
2007.02.04
печать на принтер, которые не "по-умолчанию"


1-1166039083
Sergey3
2006-12-13 22:44
2007.02.04
чтение-запись в RSS


15-1168460341
ferr
2007-01-10 23:19
2007.02.04
Eagles -- Hotel California (original videoClip)


15-1168644407
kaZaNoVa
2007-01-13 02:26
2007.02.04
Плохое настроение и как с этим бороться





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский