Название: QT4 и поля таблици созданные как NUMERIC(5,2) Отправлено: pacmanoid от Август 01, 2006, 20:31 Возникла интересная проблема:
Использую QT4.1.3 + QIBASE + Firebird1.5 + LINUX Создал SQL запросом простую таблицу одно из полей которой описывается так: ... P7_MW NUMERIC(5,2) DEFAULT 0, ... Потом в клиентском приложении создаю модеть о передаю ее виджету отображения. В модели использую простой select * from mytabl. Почемуто числа в таблице отображаются так если 1 то в ячейке 100 если 44.1 то в ячейке 4410 если создать поле с ... P7_MW NUMERIC(10,2) DEFAULT 0, ... то все отображается нормально если 1 то в ячейке 1 если 44.1 то в ячейке 44.1 Что за хрень непойму, может както можно задать маску для отображения таких полей или я чтото делаю нетак. Может чего незнаю. Пожалуста, подскажите кто знает в чем проблема? Название: QT4 и поля таблици созданные как NUMERIC(5,2) Отправлено: Alexandr Az от Август 04, 2006, 11:31 Мдя. Грустно. Что тут сказать. Не сделали они дрова нормальные для ибейса. Смысл такой, твой тип валяется в самой базе как integer. Типа нефиг его хранить в флоат если он в интеджер влазит. Тут понятно. Ну и база соответственно возвращает что тип интеджер. Токи она ещё и возвращает scale, в твоём случае - 2. А куте на scale забило. Если ты NUMERIC(10,2) сделаешь, в интеджер он не влазить, его тип в базе флоат, и всё хорошо. Короче. пересобери дрова, изменить функцию qIBaseTypeName2, добавив туда второй парамер scale и анализировать его :). Ну и соответственно поменять вызовы этой функции. Удачи. Тут с ибейсом много работают, думаю что все с такими граблями стыкнутся. Хорошо когда база твоя, а когда кто то другой её ваяет.
добавлено спустя: Гы. Думаю всё же понять токи одну эту функцию не поможет, надо еще и результат делить на 10 в степени скале :) Название: QT4 и поля таблици созданные как NUMERIC(5,2) Отправлено: Alexandr Az от Август 08, 2006, 14:20 Hi Alexandr,
On Friday, 04. aug 2006 11:00 azazello/mesr.zt.energy.gov.ua wrote: > Short description: > wrong return field type for interbase/firebird > > What I did: > in interbase/firebird create field NUMERIC(5,2) and got in select sql > statment QSqlField type integer. > > What I expected to see: > I wanna got sql field type float > > What I got instead: > got QSqlField type integer > > More info: > firebird/interbase keep small numeric field in type integer. QT ibase > plugin ignore this and parameter scale (in my case 2). if I create > NUMERIC(10,2), firebird/interbase keep this field in float type and > all Ok. I can reproduce this problem here so I've created task 125053 for our developers who will look into this further. You can track this task using the task tracker at: http://www.trolltech.com/developer/task-tracker http://www.trolltech.com/customers/task-tracker Thanks for the report, Andy -- Andy Shaw, Senior Support Engineer Trolltech ASA, Oslo - http://www.trolltech.com |