Не могу получить данные из поля типа MONEY, Возвращает пустоту с БД MSSQL |
Здравствуйте, гость ( Вход | Регистрация )
Не могу получить данные из поля типа MONEY, Возвращает пустоту с БД MSSQL |
silver47 |
24.4.2013, 6:57
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Добрый день.
Столкнулся с такой проблемой: есть данные типа money в БД MS SQL, при запросе SELECT возвращается пустое значение. Проблема повторяется и на Qt 4.8.4 и на Qt 5.0.1 с Win7. С чем может быть связано? Спасибо. |
|
|
Алексей1153 |
24.4.2013, 14:04
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
структуру таблицы и запрос в студию, что тут скрывать )
|
|
|
silver47 |
25.4.2013, 6:27
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
структуру таблицы и запрос в студию, что тут скрывать ) Думаете чем то поможет? Таблица: Раскрывающийся текст CREATE TABLE [dbo].[sale] ( [id] int NOT NULL, [saleid] int NULL, [operationid] int NULL, [peopleid] int NULL, [itemid] int NULL, [itemcount] money NULL, [cost] money NULL, [printed] bit NULL, [daytime] datetime NULL ) ON [PRIMARY] GO Запрос любой, затрагивающий значение поля cost или itemcount. Например: Раскрывающийся текст
|
|
|
Iron Bug |
25.4.2013, 7:46
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
|
|
|
lanz |
25.4.2013, 8:13
Сообщение
#5
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Если используется драйвер ODBC, то он не поддерживает тип MONEY. Можно вместо него использовать DECIMAL, либо в SELECT делать CAST.
|
|
|
silver47 |
25.4.2013, 10:45
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
я что-то не уверена, что SQL это сожрёт. значение типа VARCHAR в поле типа INT обычно переводится через CAST. хотя, насчёт MS SQL я не помню деталей. SQL это сожрет и MS SQL и PostgreSQL и SQLite, кроме того, чуть выше был вывод qDebug, где видно, что запрос данные то вернул, так что дело не в этом. К тому же это был пример для того чтобы показать проблему, в реальной жизни там значение подставляется через QSqlQuery::bindValue(); Если используется драйвер ODBC, то он не поддерживает тип MONEY. Можно вместо него использовать DECIMAL, либо в SELECT делать CAST. Используется ODBC, менять тип поля нельзя. Пока обхожусь CAST. Думал вообще-то что QVariant не поддерживает тип MONEY, а оказалось что драйвер гм.... Сообщение отредактировал silver47 - 25.4.2013, 12:19 |
|
|
Текстовая версия | Сейчас: 29.3.2024, 18:38 |