Форум: "Базы";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];
Внизработа с числовами полями длинной размерности в бд на 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c