Решено: перемещение к произвольной записи в QDataTable (объявить глобальный курсор?)

Модератор: Модераторы разделов

mokynis
Сообщения: 48
ОС: KUbuntu 7.10

Решено: перемещение к произвольной записи в QDataTable

Сообщение mokynis »

Пишу в 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>). А у меня изначально база хоть и
объявлена, но не определена, а про таблицы и говорить нечего. Как же достучаться до курсора?
Спасибо сказали:
mokynis
Сообщения: 48
ОС: KUbuntu 7.10

Re: Решено: перемещение к произвольной записи в QDataTable

Сообщение mokynis »

часть проблемы решил: объявил глобально
QSqlSelectCursor *cur;
в момент соединения с базой сделал
cur=new QSqlSelectCursor();
Теперь виден отовсюду. Если задать
cur->seek(cur->at()-lineEdit1->text().toInt())
cur->at(), показывает, что в запросе сменилась текущая запись. А в таблице, холера, как стояла на месте, так и стоит. И tab->refresh() не помогает. Как отобразить в QDataTable реальное положение?
Спасибо сказали:
mokynis
Сообщения: 48
ОС: KUbuntu 7.10

Re: Решено: перемещение к произвольной записи в QDataTable

Сообщение mokynis »

стоит написать в форум, как со страху сам до всего додумываешься. Неделю бился, пока не написал. Решение на поверхности: QDataTable имеет функции
void selectRow(int)
int currEditRow()
int currentRow()
int numRows()
С ними все легко делается. Может кому пригодится.
Спасибо сказали: