Russian Qt Forum

Qt => Базы данных => Тема начата: Alex00 от Апрель 16, 2007, 06:03



Название: Наследование
Отправлено: Alex00 от Апрель 16, 2007, 06:03
QSqlTableModel наследует от QSqlQueryModel, пытаюсь скомпилировать такой код:
...
QSqlDatabase db = QSqlDatabase::database("BASE");                                                        
model = new QSqlTableModel(this);
selectSQL = "SELECT NAME,RNN,ADRES FROM S_KONTR ORDER BY NAME";
model->setQuery(selectSQL, db);
...
При этом для последней строки в примере, компилятор пишет
error: no matching function for call to 'QSqlTableModel::setQuery(selectSQL, db)'
Это значит, что QSqlTableModel не позволит делать запросы
 при помощи setQuery(selectSQL, db)?
Нужны не все столбцы из таблицы и я хотел этим путем выбрать.Что сделать?


Название: Наследование
Отправлено: Mikhail от Апрель 16, 2007, 07:38
Цитировать

model->setQuery(selectSQL, db);


setQuery - это защищенная функция для QSqlTableModel. Поэтому ошибка.

Прежде всего надо читать документацию.

Используй для выборки:
model->setFilter ( const QString & filter );
model->select();

Для таблицы ( tableView ) в которой представляешь результаты запроса
tableView->setColumnHidden( int column, bool st );