QSqlTableModel Выборка полей, QSqlTableModel Выборка полей |
Здравствуйте, гость ( Вход | Регистрация )
QSqlTableModel Выборка полей, QSqlTableModel Выборка полей |
fortero |
6.4.2011, 23:42
Сообщение
#1
|
Участник Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: 0 |
Доброе время суток, народ подскажите начинающему как в классе QSqlTableModel, сделать выборку нужных полей по умолчанию примерно следующее SELECT * FROM table;
А как мне сделать что бы он выбирал к примеру только SELECT id, name FROM table ??? Фильтр не канает… пробовал((( Спасибо за внимание… |
|
|
maint |
7.4.2011, 4:45
Сообщение
#2
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
Доброе время суток, народ подскажите начинающему как в классе QSqlTableModel, сделать выборку нужных полей по умолчанию примерно следующее SELECT * FROM table; А как мне сделать что бы он выбирал к примеру только SELECT id, name FROM table ??? Фильтр не канает… пробовал((( Спасибо за внимание… тут уж надо выбирать. Либо использовать QSqlQueryModel или прятать ненужные столбцы в представлении модели (например в QTableView - setColumnHidden) |
|
|
PAFOS |
7.4.2011, 8:27
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Ну почему же выбирать)
QSqlTableModel наследуется от QSqlQueryModel, в которой есть метод setQuery(). Однако в QSqlTableModel он является защиненным (мне лично непонятно как ) Есть хитрость: Воспользуемся преимуществами наследования.
И вуаля! Все сработало) Сообщение отредактировал PAFOS - 7.4.2011, 8:28 |
|
|
fortero |
7.4.2011, 11:46
Сообщение
#4
|
Участник Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: 0 |
Ну почему же выбирать) QSqlTableModel наследуется от QSqlQueryModel, в которой есть метод setQuery(). Однако в QSqlTableModel он является защиненным (мне лично непонятно как ) Есть хитрость: Воспользуемся преимуществами наследования.
И вуаля! Все сработало) Это очень интересно, Спасибо Вам большое! А можно прокаментировать строчки я новичок, можно дотошно обяснить по шагово мне это очень интересно! |
|
|
MoPDoBoPoT |
7.4.2011, 21:54
Сообщение
#5
|
Участник Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: 9 |
Можно средствами БД решить, создав представление и сделав выборку из него.
|
|
|
fortero |
8.4.2011, 1:13
Сообщение
#6
|
Участник Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всё получилось как Вы и сказали, но вот редактировать отказывается(((
Что то можно сделать? Цитата Можно средствами БД решить, создав представление и сделав выборку из него. Это как? |
|
|
PAFOS |
8.4.2011, 8:14
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: 8 |
Цитата Всё получилось как Вы и сказали, но вот редактировать отказывается((( Поправте код :
Только учтите, что при добавлении новой записи, если у остальных полей таблицы нету значений по умолчанию, то добавление записи не произойдет. Редактирование вроде бы должно проходить. |
|
|
abc |
8.4.2011, 13:07
Сообщение
#8
|
Участник Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4 |
|
|
|
MoPDoBoPoT |
8.4.2011, 20:43
Сообщение
#9
|
Участник Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: 9 |
|
|
|
512es |
16.1.2012, 3:00
Сообщение
#10
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
Уже наверное не актуально, случайно нагуглил тему.
Трюк с наследованием имхо жуткий хак, лучше не юзать. А так же со вьюшками в базе.. Не самый лучший способ. Есть же стандартный метод в QSqlTableModel: Цитата void QSqlTableModel::setFilter ( const QString & filter ) [virtual] Sets the current filter to filter. The filter is a SQL WHERE clause without the keyword WHERE (for example, name='Josephine'). If the model is already populated with data from a database, the model re-selects it with the new filter. Otherwise, the filter will be applied the next time select() is called. Или и правда, подумайте, может вам лучше использовать QSqlQueryModel |
|
|
Текстовая версия | Сейчас: 30.11.2024, 5:04 |