Russian Qt Forum
Ноябрь 23, 2024, 07:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: не дополучаю содержимое запроса  (Прочитано 5601 раз)
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« : Февраль 04, 2010, 13:57 »

просто интересно, почему так:
получаю информацию для последующей печати-
void MyModel::makeHtml()
{
    QSqlQuery qry=this->query();
    QString strHtml="<TABLE BORDER>",tekUser="";
//пробовал без first(),next() и isValid(), просто while(qry.next())-теряет первые записи
    qry.first();
    while(qry.isValid())
    {
        if(tekUser!=qry.value(1).toString())
        {
            strHtml+="<TR><TH COLSPAN=5>"+qry.value(1).toString()+"</TH></TR>";
            tekUser=qry.value(1).toString();
        }
        strHtml+="<TR><TD>"+qry.value(2).toString()+"</TD>"+.....
        qry.next();
    }
    strHtml+="</TABLE>";
........
}
вопрос: почему надо непременно мудрить с first()? Я ж в qry получил содержимое запроса? Даже если встаю на первую строку в QTableView, в которой отображается модель, все равно на печати отсутствуют несколько первых строк.
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
crossly
Гость
« Ответ #1 : Февраль 04, 2010, 14:05 »

При переходе на по TableView QSqlQuery::seek не вызывается.... а вызывается он в методе data модели.... т. е. по идее при QSqlQuery qry=this->query(); позиция в запросе должна быть в строке для которой последним вызывался  data модели.... каламбур... но надеюсь понятно??
Записан
CroCIV
Гость
« Ответ #2 : Февраль 04, 2010, 14:36 »

нет )))) не понятно, прям талантище для написания курсовых и дипломов Смеющийся
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #3 : Февраль 04, 2010, 14:43 »

Цитировать
надеюсь понятно??
не особо Грустный
Если я на первой строке стою, то для нее и вызывается data (у меня подробно раскрывается выбранная запись). Ну, не будет в распечатке первой записи, так у меня их штук несколько отсутствует.
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
CroCIV
Гость
« Ответ #4 : Февраль 04, 2010, 14:51 »

mokynis, а что возвращает тебе qry.at()?
Записан
CroCIV
Гость
« Ответ #5 : Февраль 04, 2010, 14:56 »

попробуй еще предварительно перед выполнением запроса установить setForwardOnly(true) и потом выполнение запроса, потом at() что вернет.
В твоем случае setForwardOnly(true) больше подходит, тебе же не надо выполнять замысловатую навигацию по запросу, просто данные получить ?
Записан
crossly
Гость
« Ответ #6 : Февраль 04, 2010, 15:04 »

Цитировать
надеюсь понятно??
не особо Грустный
Если я на первой строке стою, то для нее и вызывается data (у меня подробно раскрывается выбранная запись). Ну, не будет в распечатке первой записи, так у меня их штук несколько отсутствует.

а с чего это он должен вызываться когда ты на нем стоишь??
Записан
CroCIV
Гость
« Ответ #7 : Февраль 04, 2010, 15:19 »

кароче так, при QSqlQuery qry=this->query();
qry уже имеет смещенный индекс активной записи, когда он был смещен и почему, это надо шерстить this
и на самом деле да, если this - это некоторый указатель на объект, имеющий собственную модель, то, как метко заметил crossly индекс активного элемента модели НЕ одно и тоже, что и индекс активной записи запроса, т.е. можно индекс модели this-a менять как угодно от этого индекс активной записи запроса не изменится, до покуда не будет выполнено непосредственное обращение к данным запроса
каламбур?
Записан
crossly
Гость
« Ответ #8 : Февраль 04, 2010, 15:31 »

примерно то же что и у меня Улыбающийся.... короче.... когда ты ходишь по вьюхе ты по сути дела работаешь с itemselectionmodel... метод data модели вызывается при создании/обновлении модели... но никак не при выделении ....
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #9 : Февраль 05, 2010, 09:30 »

действительно, at() показывает, что перед применением next() я стою на 3-й строке. С 4-й как раз и выводится на печать. Ну и бес с ней-буду выбирать, как показал в самом начале. Спасибо за информацию
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.091 секунд. Запросов: 23.