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

Вниз

работа с числовами полями длинной размерности в бд на MAINFRAME   Найти похожие ветки 

 
stasssw   (2003-04-30 18:17) [0]

DELPHI программа работает с СУБД db2 на Mainframe.ТАм есть тип поля DECIMAL например DECIMAL(18,2), НУжно выбирать это поле и не только отображать, но и производить вычисления,и отображать затем только!!! в целочисленном формате, а не float,PC поддерживает только 15 знаков, можно выбрать данные, как string(есть функция db2 CHAR),но это затрудняет вычисления и к тому же она отображает любое число, как 18 знаков, дополняя незначащими нулями слева, а отображаться значение как десятичная дробь число без лишних нулей слева и с 2-мя знаками после запятой, например 1222.45(так нужно давать данные пользователю), а не 0000000000001222.45 и не что-то типа 1.22E5(экспоненциальная форма). Помогите, может кто-нибудь тоже сталкивался с такой проблемой. Заранее, спасибо.


 
Zacho ©   (2003-04-30 18:57) [1]

Совет такой: читать книжки, хелпы, и т.п. по Дельфи. А так же более вразумительно формулировать вопросы. Чем не подходит например, Int64 ? В чем, вообще, проблема ? Например, я работаю на Interbase"е c NUMERIC (18,2) и проблем не возникает. И вообще, какая разница, mainframe или notebook, типы данных (и работа с ними) везде одинаковы. Что за глупость "PC поддерживает только 15 знаков" ??? Да сколько угодно знаков может поддерживать все что угодно, от железа это не зависит.
В, общем, напиши конкретно, в чем проблема. Но только после того, как почитаешь хоть какие-нибудь учебники.


 
Zacho ©   (2003-04-30 19:22) [2]

Еще раз перечитал твой вопрос, включил телепатический режим :-) и кажется понял: похоже, ты хотел сказать, что используемые тобой компоненты доступа к БД не поддерживают 64-х разрядные типы данных ? Тогда написал бы хоть, чем пользуешься (BDE ? или что-то специфичное для DB2 ?).
Если хочешь получить вразумительный ответ, задавай вопрос так, что-бы и не телепаты могли его понять. Пиши более аккуратно, в твоем тексте черт ногу сломит, понять что-нибудь можно только с большим напрягом.
И еще раз посоветую: читай про типы данных в Object Pascal"е и про работу с разными типами данных, и сможешь найти решение самостоятельно.


 
stasssw   (2003-04-30 19:27) [3]

zacho:приблизительно,так, если отобразить В dbgrid запрос
select num from t. где num - decimal(18,2) и num имеет >16
знаков, оно высветится xxxEnn (экспоненц.форме), проверено, и SQL-explore, если брать fieldbyname("num").Asstring, то отобразится правильно, но со незначащими нулями (000000000134.00)Я не очень крутой программист и мне надо, что типа fieldbyname("num").<какой-нибудь тип>,чтобы получить 000000000134.00 ->34.00
Благодарю!!!


 
stasssw   (2003-04-30 19:32) [4]

zacho от stasssw: уточнение ---- пользуюсь ADO,ODBC


 
Zacho ©   (2003-04-30 19:47) [5]


> stasssw (30.04.03 19:32)

Я с ADO не работаю, поэтому посоветовать мало что могу. Спроси у спецов по ADO (советую поставить в тему вопроса "ADO" чтобы обратили внимание). Почитай хелп по ADO-компонентам. Попробуй AsCurrency. В любом случае, ты всегда можешь преобразовать значение к нужному виду, пользуясь событиями TField.OnGetText и OnSetText. Также посмотри св-во DisplayFormat. Да и нули в строках всегда можно обрезать, смотри функции для работы со строками. В общем, читай,ищи и пробуй, и все получится !



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
3-70093
Michel
2003-05-04 15:23
2003.05.22
Как преобразовать БД одной системы в другую


1-70209
Marina_S
2003-05-10 21:27
2003.05.22
Как сделать так, чтобы программа запускалась не с главной формы,


3-70144
Igor Mish
2003-04-23 12:37
2003.05.22
Прокрутка DBGrid колесиком


14-70460
Xeon
2003-05-02 07:51
2003.05.22
Компиляция?


3-70182
Avreliy
2003-05-03 17:25
2003.05.22
Отказ работы ограничения NOT NULL!