0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
|
|
1 | |
QSqlTableModel data types23.10.2016, 10:10. Показов 1856. Ответов 21
Метки нет Все метки)
(
Например если я делаю селект из таблицы бд, то данная модель будет присваивать каждому полю тип, соответствующий типу из таблицы в БД или тип у всех полей будет String? И например если мне в представлении TableView нужно производить с данными арифметические операции, то в самом представлении какого типа будут поля? Спасибо.
0
|
|
23.10.2016, 10:10 | |
Ответы с готовыми решениями:
21
IAR data types Где найти список data types для C и C++? Data types cannot be compared or sorted, except when using IS NULL or LIKE operator |
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 |
0
|
7368 / 6289 / 2857
Регистрация: 14.04.2014
Сообщений: 27,252
|
|
23.10.2016, 11:40 | 4 |
![]() Решение
Ну если там числа, то да. Ты как значение берёшь? Там же обычно функции используются типа toInt() для получения значения.
0
|
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
|
|
23.10.2016, 11:44 [ТС] | 5 |
А еще вопрос, вот к примеру нужно проверить введенные данные в таблицу. Где ставятся ограничения? Цикл по строке с условиями, или условие в Sql запросе. Есть ли тут разница? И что вы думаете насчет использования javascript для проверки введенных значений в tableview?
0
|
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
|
|
23.10.2016, 11:54 | 6 |
Данные все же находятся в модели.
В представлении вы лишь отображаете эти данные из модели. И операции над данными из модели производите. Соответственно, представлять вы их можете по-разному, на операции представление никак не влияет ![]() Добавлено через 3 минуты Не очень понятно, на что вы хотите проверять. Является ли значение числом? По-идее, если у вас очень много данных считывается из БД, быстрее будет написать правильный запрос. Но учтет ли это все "ограничения"...
0
|
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
|
|
23.10.2016, 11:55 [ТС] | 7 |
Я хочу в представлении по индексу произвести сложение строк - это сработает или это по другому делается?
0
|
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
|
|
23.10.2016, 11:58 | 8 |
Вы не работаете с данными представления. У представления нет данных, нет информации. У представления есть только инструмент отображения данных, находящихся в модели.
Соответственно, по индексу вам надо обращаться к элементу модели. А так, если тип элемента определяет операцию сложения (QString определяет), то складывайте на здоровье
0
|
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
|
|
23.10.2016, 12:01 [ТС] | 9 |
Я хочу проверить данные введенные в строку tableView, и если они корректны то по клику делать запрос на изменение или добавление данных в таблице БД. Ну а проверку на число здесь не нужно делать, условия совсем другие - более сложные.
Добавлено через 2 минуты Т.е всегда чисто через модель все обращение к элементам. Т.е при изменении модели она сообщит представлению что модель изменилась и её нужно перерисовать?
0
|
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
|
|
23.10.2016, 12:05 | 10 |
Да, у модели есть сигнал dataChanged(), который, по-идее, вызывается моделью сам, на что, по-идее, реагирует представление в реализации Qt.
И да, вся работа с данными через модель. Представлению вы лишь говорите как отображать модель.
0
|
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
|
|
23.10.2016, 12:09 [ТС] | 11 |
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 |
Ну например когда заполняю таблицу tableView, при переходе на новую строку проверяются условия для всей строки.
0
|
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
|
|
23.10.2016, 12:28 | 14 |
0
|
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
|
|
23.10.2016, 12:30 [ТС] | 15 |
0
|
7368 / 6289 / 2857
Регистрация: 14.04.2014
Сообщений: 27,252
|
|
23.10.2016, 12:31 | 16 |
0
|
0 / 0 / 0
Регистрация: 05.07.2016
Сообщений: 71
|
|
23.10.2016, 12:34 [ТС] | 17 |
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 |
Да, и в правду тут запросы не нужны. Ведь модель сама делает запрос на сохранение таблицы в БД. А проверку на корректно введенные данные нужно делать в модели, при событии на представлении.
Кстати про js так никто и не ответил. Это вообще целесообразно использовать
0
|
7368 / 6289 / 2857
Регистрация: 14.04.2014
Сообщений: 27,252
|
|
23.10.2016, 13:18 | 20 |
0
|
23.10.2016, 13:18 | |
Помогаю со студенческими работами здесь
20
Data types cannot be compared or sorted, except when using IS NULL or LIKE operator Ошибка при подключении к БД "The data types text and varchar are incompatible in the equal to operator" Ошибка "data types IMAGE and IMAGE are incompatible in the equal to operator" при обновлении картинки QSqlTableModel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |