![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа с числовами полями длинной размерности в бд на 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 знаков" ??? Да сколько угодно знаков может поддерживать все что угодно, от железа это не зависит.
В, общем, напиши конкретно, в чем проблема. Но только после того, как почитаешь хоть какие-нибудь учебники.