Seite 1 von 1

SQLITE: Erster Datensatz fehlt im QTableWidget (gelöst)

Verfasst: 22. März 2013 16:57
von liupo
Hallo,
ich möchte die Datensätze eines SQLite SELECTs in einem QTableWidget ausgeben lassen.

Problem
Im TableWidget fehlt der 1. Wert aus dem Datensatz und die letzte Zeile bleibt leer.
SOLL
1
2
3
4

IST
2
3
4
leer

Der SELECT gibt die richtigen und vor allem ALLE Werte zurück, das habe ich schon geprüft.
Das Problem liegt also hier in meinem QT-Code.

Zum Code:
Ich muss zunächst einmal durch die Datensätze gehen, um zu zählen, wie viele Zeilen das TableWidget generieren soll.
Danach mache ich wieder queryZutaten.first(), um zurück zum 1.Datensatz für die Ausgabe der eigentlichen Inhalte zu kommen.

Lasse ich das Durchzählen vorher weg und setze zaehl statisch auf die richtige Zahl (11), dann habe ich das Problem nicht und alle Werte werden richtig vollständig ausgegeben.

Code: Alles auswählen

//Schleife zum Zählen der Datensätze
    int zaehl=0;
    while(queryZutaten.next())
    {
        zaehl++;
    }

//QTableWidget
    ui->twZutaten->setRowCount(zaehl);

    QStringList strl;
    strl<<tr("Menge")<<tr("Einheit")<<tr("Name")<<tr("Zusatz");
    ui->twZutaten->setHorizontalHeaderLabels(strl);

    QSqlRecord sqlrec=queryZutaten.record();
    ui->twZutaten->setColumnCount(sqlrec.count());
    


//Zutaten ausgeben im QTableWidget
    if(queryZutaten.isActive())
    {
        int a=0;
        queryZutaten.first();
        while(queryZutaten.next())
        {
            for(int i=0;i<4;i++)
            {
                QTableWidgetItem *itm = new QTableWidgetItem();
                itm->setText(queryZutaten.value(i).toString());

                ui->twZutaten->setItem(a,i,itm);
            }
            a++;
        }
    }
Kann mir jemand helfen?

Re: SQLITE: Erster Datensatz fehlt im QTableWidget

Verfasst: 22. März 2013 18:12
von odt
Im Falle das queryZutaten ein QSqlQuery ist, wird mit first() der erste Record "gelesen". next() bewegt sich wiederum auf den nächsten Record.

Code: Alles auswählen

if( queryZutaten.first() ){
  do{
       setText etc
  }while( queryZutaten.next() );
}
PS: QSqlQuery hat auch eine size().

Re: SQLITE: Erster Datensatz fehlt im QTableWidget

Verfasst: 22. März 2013 18:33
von liupo
Hab vielen Dank, das hat das Problem gelöst :')

size() wird im Zusammenhang mit SQLite leider nicht unterstützt, sonst hätte ich den Ärger nicht gehabt.