crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Как мне создать маску для числового поля?
mva
  опции профиля:
сообщение 13.9.2009, 16:42
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 104
Регистрация: 15.3.2009
Из: Киров
Пользователь №: 615

Спасибо сказали: 3 раз(а)




Репутация:   0  


Доброго времени суток всем! Поздравляю всех с Днем Программиста!

В моей БД на PostgreSQL в некоторых таблицах есть числовые поля типа NUMERIC(10, 3). Ну или NUMERIC(12, 2), например. При использовании QTableView они нормально отображаются, с тремя или двумя знаками после запятой. Но при редактировании этих полей не работает маска ввода, т.е. в поле можно вводить все что угодно. Хотелось бы, чтобы пользователь сразу видел маску ввода чисел. Проблема в том, что я не знаю, где эту маску можно получить. Фунция QSqlField::precision(), на которую я рассчитывал, возвращает -1.
Кто-нибудь может помочь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 14.9.2009, 15:22
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(SABROG @ 14.9.2009, 19:15) *
- типу вводимых значений (int, float, char)
Я понял, что по типу БД (NUMERIC(10,3) ...)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 14.9.2009, 15:31
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Litkevich Yuriy @ 14.9.2009, 16:22) *
Цитата(SABROG @ 14.9.2009, 19:15) *
- типу вводимых значений (int, float, char)
Я понял, что по типу БД (NUMERIC(10,3) ...)

Кажись понял, это скалярный тип. Может быть через метод Type QVariant::type () const получится?
---
Не прокатит. Qt под одну гребенку следующие типы приводит к double:

template<class T>
static QVariant::Type qDecodeODBCType(SQLSMALLINT sqltype, const T* p, bool isSigned = true)
{
    QVariant::Type type = QVariant::Invalid;
    switch (sqltype) {
    case SQL_DECIMAL:
    case SQL_NUMERIC:
    case SQL_REAL:
    case SQL_FLOAT:
    case SQL_DOUBLE:
        type = QVariant::Double;
        break;
    case SQL_SMALLINT:
    case SQL_INTEGER:
    case SQL_BIT:
    case SQL_TINYINT:
        type = isSigned ? QVariant::Int : QVariant::UInt;
        break;


Сообщение отредактировал SABROG - 14.9.2009, 15:37
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mva
  опции профиля:
сообщение 14.9.2009, 15:53
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 104
Регистрация: 15.3.2009
Из: Киров
Пользователь №: 615

Спасибо сказали: 3 раз(а)




Репутация:   0  


Цитата(SABROG @ 14.9.2009, 16:31) *
Не прокатит. Qt под одну гребенку следующие типы приводит к double:


Вот именно.

Подсмотрел через сниффер. Оказывается, Qt ничего не знает о типе числовых полей. Она просто тупо отображает то, что получает от SQL сервера. Похоже, при открытии таблицы придется дополнительно делать запрос на сервер о более подробной информации о полях таблицы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- mva   Как мне создать маску для числового поля?   13.9.2009, 16:42
- - abra   Укажи 9999999999,999 в inputMask   13.9.2009, 21:16
- - mva   Можно конечно и так, но хотелось бы, чтобы маска н...   14.9.2009, 8:11
|- - abra   Цитата(mva @ 14.9.2009, 9:11) Можно конеч...   14.9.2009, 10:24
- - Litkevich Yuriy   mva, попробуй подключится к БД с помощью демки sql...   14.9.2009, 9:08
|- - mva   Цитата(Litkevich Yuriy @ 14.9.2009, 10:08...   14.9.2009, 13:09
- - abra   P.S так же можешь попробовать сделать так же,как д...   14.9.2009, 11:23
- - trdm   Маску не извлекают, а вычисляют... приблизительно...   14.9.2009, 13:14
|- - mva   Цитата(trdm @ 14.9.2009, 14:14) Маску не ...   14.9.2009, 15:04
- - SABROG   Цитата(mva @ 14.9.2009, 16:04) Не совсем ...   14.9.2009, 15:15
- - Litkevich Yuriy   Цитата(SABROG @ 14.9.2009, 19:15) - типу ...   14.9.2009, 15:22
|- - mva   Мне нужно генерировать маску для любого поля типа ...   14.9.2009, 15:30
|- - SABROG   Цитата(Litkevich Yuriy @ 14.9.2009, 16:22...   14.9.2009, 15:31
|- - mva   Цитата(SABROG @ 14.9.2009, 16:31) Не прок...   14.9.2009, 15:53
- - mva   Нашел вот такую функцию, с помощью которой можно б...   14.9.2009, 16:42
- - Litkevich Yuriy   mva, Я думаю, троли для начала PostgreSQL поддержа...   14.9.2009, 18:33
- - abra   Слушай.А не понимаю тебя человек....Я же написал т...   14.9.2009, 22:19
- - mva   Цитата(abra @ 14.9.2009, 23:19) Слушай.А ...   15.9.2009, 9:48


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


14 чел. читают эту тему (гостей: 14, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.1.2025, 3:07