0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
1

QSqlTableModel data types

23.10.2016, 10:10. Показов 1856. Ответов 21
Метки нет (Все метки)

Например если я делаю селект из таблицы бд, то данная модель будет присваивать каждому полю тип, соответствующий типу из таблицы в БД или тип у всех полей будет String? И например если мне в представлении TableView нужно производить с данными арифметические операции, то в самом представлении какого типа будут поля? Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2016, 10:10
Ответы с готовыми решениями:

Common Data Types
Вопрос элементарный, просто ради интереса :) Я понимаю, что это, в принципе, одно и то же, но все...

IAR data types
Всем привет!! проц - STM8L051F3 Надо в общем в еепром массив уложить при прошивке, а всё что...

Где найти список data types для C и C++?
Здравствуйте. Подскажите, пожалуйста, где можно найти список data types (не знаю как они еще...

Data types cannot be compared or sorted, except when using IS NULL or LIKE operator
Помоогите совладать с ошибкой, только начал изучать SQL подскажите что не так? BD дали уже...

21
7368 / 6289 / 2857
Регистрация: 14.04.2014
Сообщений: 27,252
23.10.2016, 11:28 2
Сами поля - QVariant, а конкретный тип зависит от таблицы БД. Если в БД поле числовое, то QVariant хранит число и т. д. Можешь вывести через qDebug() и посмотреть.
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
23.10.2016, 11:35  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Сами поля - QVariant, а конкретный тип зависит от таблицы БД. Если в БД поле числовое, то QVariant хранит число и т. д. Можешь вывести через qDebug() и посмотреть.
т.е все корректно будет считаться, если например нужно перемножить строки и т.п ?
0
7368 / 6289 / 2857
Регистрация: 14.04.2014
Сообщений: 27,252
23.10.2016, 11:40 4
Лучший ответ Сообщение было отмечено OpenSky как решение

Решение

Ну если там числа, то да. Ты как значение берёшь? Там же обычно функции используются типа toInt() для получения значения.
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
23.10.2016, 11:44  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
Ну если там числа, то да.
А еще вопрос, вот к примеру нужно проверить введенные данные в таблицу. Где ставятся ограничения? Цикл по строке с условиями, или условие в Sql запросе. Есть ли тут разница? И что вы думаете насчет использования javascript для проверки введенных значений в tableview?
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
23.10.2016, 11:54 6
Цитата Сообщение от OpenSky Посмотреть сообщение
если мне в представлении TableView нужно производить с данными арифметические операции, то в самом представлении какого типа будут поля?
Данные все же находятся в модели.
В представлении вы лишь отображаете эти данные из модели. И операции над данными из модели производите. Соответственно, представлять вы их можете по-разному, на операции представление никак не влияет

Добавлено через 3 минуты
Цитата Сообщение от OpenSky Посмотреть сообщение
А еще вопрос, вот к примеру нужно проверить введенные данные в таблицу. Где ставятся ограничения? Цикл по строке с условиями, или условие в Sql запросе.
Не очень понятно, на что вы хотите проверять. Является ли значение числом?
По-идее, если у вас очень много данных считывается из БД, быстрее будет написать правильный запрос. Но учтет ли это все "ограничения"...
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
23.10.2016, 11:55  [ТС] 7
Цитата Сообщение от Slip. Посмотреть сообщение
Данные все же находятся в модели.
В представлении вы лишь отображаете эти данные из модели. И операции над данными из модели производите. Соответственно, представлять вы их можете по-разному, на операции представление никак не влияет
Я хочу в представлении по индексу произвести сложение строк - это сработает или это по другому делается?
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
23.10.2016, 11:58 8
Цитата Сообщение от OpenSky Посмотреть сообщение
Я хочу в представлении по индексу произвести сложение строк - это сработает или это по другому делается?
Вы не работаете с данными представления. У представления нет данных, нет информации. У представления есть только инструмент отображения данных, находящихся в модели.
Соответственно, по индексу вам надо обращаться к элементу модели. А так, если тип элемента определяет операцию сложения (QString определяет), то складывайте на здоровье
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
23.10.2016, 12:01  [ТС] 9
Цитата Сообщение от Slip. Посмотреть сообщение
Не очень понятно, на что вы хотите проверять. Является ли значение числом?
По-идее, если у вас очень много данных считывается из БД, быстрее будет написать правильный запрос. Но учтет ли это все "ограничения"...
Я хочу проверить данные введенные в строку tableView, и если они корректны то по клику делать запрос на изменение или добавление данных в таблице БД. Ну а проверку на число здесь не нужно делать, условия совсем другие - более сложные.

Добавлено через 2 минуты
Цитата Сообщение от Slip. Посмотреть сообщение
Вы не работаете с данными представления. У представления нет данных, нет информации. У представления есть только инструмент отображения данных, находящихся в модели.
Соответственно, по индексу вам надо обращаться к элементу модели. А так, если тип элемента имеет определяет операцию сложения (QString определяет), то складывайте на здоровье
Т.е всегда чисто через модель все обращение к элементам. Т.е при изменении модели она сообщит представлению что модель изменилась и её нужно перерисовать?
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
23.10.2016, 12:05 10
Цитата Сообщение от OpenSky Посмотреть сообщение
Т.е всегда чисто через модель все обращение к элементам. Т.е при изменении модели она сообщит представлению что модель изменилась и её нужно перерисовать?
Да, у модели есть сигнал dataChanged(), который, по-идее, вызывается моделью сам, на что, по-идее, реагирует представление в реализации Qt.
И да, вся работа с данными через модель. Представлению вы лишь говорите как отображать модель.
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
23.10.2016, 12:09  [ТС] 11
Цитата Сообщение от Slip. Посмотреть сообщение
Да, у модели есть сигнал dataChanged(), который, по-идее, вызывается моделью сам, на что, по-идее, реагирует представление в реализации Qt.
И да, вся работа с данными через модель. Представлению вы лишь говорите как отображать модель.
Так я и не понял, что лучше запрос с условиями или же проверка при вводе?
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
23.10.2016, 12:12 12
Ну что лучше: взять огурец, надкусить, а потом посмотреть чистый ли он, или же пока берешь посмотреть чистый ли он, а потом откусить?
И не очень понятно, при каком вводе?
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
23.10.2016, 12:22  [ТС] 13
Цитата Сообщение от Slip. Посмотреть сообщение
Ну что лучше: взять огурец, надкусить, а потом посмотреть чистый ли он, или же пока берешь посмотреть чистый ли он, а потом откусить?
И не очень понятно, при каком вводе?
Ну например когда заполняю таблицу tableView, при переходе на новую строку проверяются условия для всей строки.
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
23.10.2016, 12:28 14
Цитата Сообщение от OpenSky Посмотреть сообщение
Ну например когда заполняю таблицу tableView, при переходе на новую строку проверяются условия для всей строки.
Еще раз. Вы не заполняете tableView. Вы заполняете model. Методом select();
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
23.10.2016, 12:30  [ТС] 15
Цитата Сообщение от Slip. Посмотреть сообщение
Еще раз. Вы не заполняете tableView. Вы заполняете model. Методом select();
Ну я же ввожу в tableView значения
0
7368 / 6289 / 2857
Регистрация: 14.04.2014
Сообщений: 27,252
23.10.2016, 12:31 16
Цитата Сообщение от OpenSky Посмотреть сообщение
когда заполняю таблицу tableView, при переходе на новую строку проверяются условия для всей строки.
Данные сразу же в модель попадают, вот там и проверяй.
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
23.10.2016, 12:34  [ТС] 17
Цитата Сообщение от nmcf Посмотреть сообщение
Данные сразу же в модель попадают, вот там и проверяй.
Значит здесь запросы с условиями не уместны? Т.е они используются в другом случае
0
7368 / 6289 / 2857
Регистрация: 14.04.2014
Сообщений: 27,252
23.10.2016, 12:53 18
При чём тут запросы? Ты можешь использовать запрос, чтобы получить желаемую выборку из БД. Данные, введённые пользователем, проверяешь сам. Если там что-то некорректно, то они просто не сохранятся - БД ошибку вернёт.
0
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
23.10.2016, 12:57  [ТС] 19
Цитата Сообщение от nmcf Посмотреть сообщение
При чём тут запросы? Ты можешь использовать запрос, чтобы получить желаемую выборку из БД. Данные, введённые пользователем, проверяешь сам. Если там что-то некорректно, то они просто не сохранятся - БД ошибку вернёт.
Да, и в правду тут запросы не нужны. Ведь модель сама делает запрос на сохранение таблицы в БД. А проверку на корректно введенные данные нужно делать в модели, при событии на представлении.

Кстати про js так никто и не ответил. Это вообще целесообразно использовать
0
7368 / 6289 / 2857
Регистрация: 14.04.2014
Сообщений: 27,252
23.10.2016, 13:18 20
Цитата Сообщение от OpenSky Посмотреть сообщение
про js так никто и не ответил
А откуда там js взялся? Про C++ вроде бы говорим.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2016, 13:18
Помогаю со студенческими работами здесь

Data types cannot be compared or sorted, except when using IS NULL or LIKE operator
Помоогите совладать с ошибкой, только начал изучать SQL подскажите что не так? BD дали уже...

Ошибка при подключении к БД "The data types text and varchar are incompatible in the equal to operator"
Если невникать в подключение в БД, то вот собственно код команды: string newsTitle = "Россия...

Ошибка "data types IMAGE and IMAGE are incompatible in the equal to operator" при обновлении картинки
Получаю текущую аватарку клиента @OldImage (Image тип в базе данных), храню Image в byty массиве,...

QSqlTableModel
Исходные данные: msvs 2010, qt 5.0.2 и 5.2.1, ms sql server 2008 В Бд есть табличка с полями...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru