dBase ODBC und QSqlTableModel

Alles rund um die Programmierung mit Qt
Antworten
LtdDan
Beiträge: 2
Registriert: 26. August 2011 16:15

dBase ODBC und QSqlTableModel

Beitrag von LtdDan »

Hallo,

ich verwende einen dBase ODBC-Treiber um auf eine dBase-Datenbank zuzugreifen. Der Zugriff mit

Code: Alles auswählen

QSqlQuery query
query = Datenbank.exec(tr("SELECT * FROM TABELLE"));
funktioniert. Jetzt möchte ich das QSqlTableModel mit dem QTableView Objekt verwenden. Das füllen des QSqlTableModel Objekts mit Daten funktioniert nicht. In der TableView werden nur die Kopfzeile, also die Spaltennamen angezeigt, sonst keine weiteren Daten bzw.Zeilen.

Code: Alles auswählen

//Header
QSqlTableModel *mModel;

Code: Alles auswählen

//Funktion
mModel = new QSqlTableModel(this,this->Datenbank);
mModel->setTable(tr("TABELLE"));
mModel->select();
ui->tableErgebnis->setModel(mModel);
//Fehler Ausgabe
mApp->writeT(mModel->lastError().text());
Fehlerausgabe: Forward-only queries cannot be used in a data model

Vielen Dank für mögliche Hilfe
LtdDan
Beiträge: 2
Registriert: 26. August 2011 16:15

Re: dBase ODBC und QSqlTableModel

Beitrag von LtdDan »

Hallo,

da ich leider noch keine Antwort erhalten habe, hier weitere Details die das Problem weiter eingrenzen.
Die Fehlernachricht ist unabhängig von QTableView. Der Fehler tritt bei der Nutzung von QSqlTableModel() und auch bei der Nutzung von QSqlQueryModel() auf. Das setzen auf Forward-only = false ändert leider nichts.

Code: Alles auswählen

model->query().setForwardOnly(false);
Meine Vermutung ist, das der ODBC-Treiber die SELECT anfrage als forward-only ausführt. Ich nutze nicht den Microsoft dBase Treiber sondern einen Treiber von datadirect. Kann mir jemand sagen, wie ich den Treiber ansprechen kann, um ihn anders zu konfigurieren?

Danke
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: dBase ODBC und QSqlTableModel

Beitrag von franzf »

In der datadirect-Faq steht, dass sie den forward-only-Cursor so dolle optimieren. K.A. ob man den direkt auch abschalten kann. Evtl. in der odbc.ini? Oder beim DB-Name (beim connect über QSqlDatase)? Das steht vllt. irgendwo im Handbuch, ansonsten mal bei datadirect nachfragen.
Antworten