Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

работа с числовами полями длинной размерности в бд на MAINFRAME [D5, DB2 for os390]


stasssw ©   (2003-04-30 18:17:00) 

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 19:47:00) [1]


> stasssw (30.04.03 19:32)

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


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

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


stasssw   (2003-04-30 19:27:00) [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
Благодарю!!!


Zacho   (2003-04-30 19:22:00) [4]

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


Zacho   (2003-04-30 18:57:00) [5]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо