Пишу в Qt3 простенькую программку.
QSqlDatabase *db объявлена глобально. Слот createConnection() подключается к базе, при успешном соединении срабатывает функция fillTab()
и заполняет QDataTable данными из базы. База может быть открыта с фильтром, поэтому QSqlCursor создается прямо в этой ф-ции.
Проблемы:
1) как переместиться к пороизвольной записи? Перемещение, как я понимаю происходит не в таблице, а в курсоре, что-то типа
seek(number) ?
2) если нужно удалить запись, сначала надо проверить, выделена ли она в таблице. Тогда так?:
if(seek(at())
{
QSqlQuery qq(db);
qq.exec("DELETE FROM tab WHERE id="+cursor->value("id").toString());
}
В обоих случаях проблема одна и та же-курсор объявлен в функции и из других ф-ция я его не вижу. А как его объявить глобально,
я не понимаю. Везде описывается объявление типа QSqlCursor curcor(<table from database>). А у меня изначально база хоть и
объявлена, но не определена, а про таблицы и говорить нечего. Как же достучаться до курсора?
Решено: перемещение к произвольной записи в QDataTable (объявить глобальный курсор?)
Модератор: Модераторы разделов
-
- Сообщения: 48
- ОС: KUbuntu 7.10
-
- Сообщения: 48
- ОС: KUbuntu 7.10
Re: Решено: перемещение к произвольной записи в QDataTable
часть проблемы решил: объявил глобально
QSqlSelectCursor *cur;
в момент соединения с базой сделал
cur=new QSqlSelectCursor();
Теперь виден отовсюду. Если задать
cur->seek(cur->at()-lineEdit1->text().toInt())
cur->at(), показывает, что в запросе сменилась текущая запись. А в таблице, холера, как стояла на месте, так и стоит. И tab->refresh() не помогает. Как отобразить в QDataTable реальное положение?
QSqlSelectCursor *cur;
в момент соединения с базой сделал
cur=new QSqlSelectCursor();
Теперь виден отовсюду. Если задать
cur->seek(cur->at()-lineEdit1->text().toInt())
cur->at(), показывает, что в запросе сменилась текущая запись. А в таблице, холера, как стояла на месте, так и стоит. И tab->refresh() не помогает. Как отобразить в QDataTable реальное положение?
-
- Сообщения: 48
- ОС: KUbuntu 7.10
Re: Решено: перемещение к произвольной записи в QDataTable
стоит написать в форум, как со страху сам до всего додумываешься. Неделю бился, пока не написал. Решение на поверхности: QDataTable имеет функции
void selectRow(int)
int currEditRow()
int currentRow()
int numRows()
С ними все легко делается. Может кому пригодится.
void selectRow(int)
int currEditRow()
int currentRow()
int numRows()
С ними все легко делается. Может кому пригодится.