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

Alles rund um die Programmierung mit Qt
Antworten
liupo
Beiträge: 7
Registriert: 7. März 2013 08:33

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

Beitrag 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?
Zuletzt geändert von liupo am 1. April 2013 23:44, insgesamt 1-mal geändert.
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: SQLITE: Erster Datensatz fehlt im QTableWidget

Beitrag 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().
ODT Informatik GmbH, Reto Tschofenig
liupo
Beiträge: 7
Registriert: 7. März 2013 08:33

Re: SQLITE: Erster Datensatz fehlt im QTableWidget

Beitrag 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.
Antworten