![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
fortero |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Доброе время суток, народ подскажите начинающему как в классе QSqlTableModel, сделать выборку нужных полей по умолчанию примерно следующее SELECT * FROM table;
А как мне сделать что бы он выбирал к примеру только SELECT id, name FROM table ??? Фильтр не канает… пробовал((( Спасибо за внимание… |
|
|
maint |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
Доброе время суток, народ подскажите начинающему как в классе QSqlTableModel, сделать выборку нужных полей по умолчанию примерно следующее SELECT * FROM table; А как мне сделать что бы он выбирал к примеру только SELECT id, name FROM table ??? Фильтр не канает… пробовал((( Спасибо за внимание… тут уж надо выбирать. Либо использовать QSqlQueryModel или прятать ненужные столбцы в представлении модели (например в QTableView - setColumnHidden) |
|
|
PAFOS |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Ну почему же выбирать)
QSqlTableModel наследуется от QSqlQueryModel, в которой есть метод setQuery(). Однако в QSqlTableModel он является защиненным (мне лично непонятно как ![]() Есть хитрость: Воспользуемся преимуществами наследования.
И вуаля! Все сработало) Сообщение отредактировал PAFOS - 7.4.2011, 8:28 |
|
|
fortero |
![]()
Сообщение
#4
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ну почему же выбирать) QSqlTableModel наследуется от QSqlQueryModel, в которой есть метод setQuery(). Однако в QSqlTableModel он является защиненным (мне лично непонятно как ![]() Есть хитрость: Воспользуемся преимуществами наследования.
И вуаля! Все сработало) Это очень интересно, Спасибо Вам большое! А можно прокаментировать строчки я новичок, можно дотошно обяснить по шагово мне это очень интересно! |
|
|
MoPDoBoPoT |
![]()
Сообщение
#5
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Можно средствами БД решить, создав представление и сделав выборку из него.
|
|
|
fortero |
![]()
Сообщение
#6
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Всё получилось как Вы и сказали, но вот редактировать отказывается(((
Что то можно сделать? Цитата Можно средствами БД решить, создав представление и сделав выборку из него. Это как? |
|
|
PAFOS |
![]()
Сообщение
#7
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Всё получилось как Вы и сказали, но вот редактировать отказывается((( Поправте код :
Только учтите, что при добавлении новой записи, если у остальных полей таблицы нету значений по умолчанию, то добавление записи не произойдет. Редактирование вроде бы должно проходить. |
|
|
abc |
![]()
Сообщение
#8
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
MoPDoBoPoT |
![]()
Сообщение
#9
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
512es |
![]()
Сообщение
#10
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Уже наверное не актуально, случайно нагуглил тему.
Трюк с наследованием имхо жуткий хак, лучше не юзать. А так же со вьюшками в базе.. Не самый лучший способ. Есть же стандартный метод в 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 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 18:16 |