Seite 1 von 1

QSqlTableModel removeColumn / insertColumn - nichts passiert

Verfasst: 22. Januar 2014 12:25
von TheClerk
Hallo zusammen,

ich habe ein Problem mit der Verwendung von QSqlTableModel. Das Löschen und Einfügen von Zeilen funktioniert wunderbar. Das Löschen und Einfügen von Spalten leider nicht. Mein Code sieht so aus:

Code: Alles auswählen

database.transaction(); // true
tab.setTable("MyTable"); // true
tab.select(); // vermutlich nicht nötig aber schadet (erstsmal) nicht
int colCount = tab.columnCount(); // z.B. 10
bool check = tab.removeColumn(0); // true
colCount = tab.columnCount(); // 9, soweit, so gut
check = tab.submitAll(); // true
colCount = tab.columnCount(); // immer noch 9
database.commit(); // true
colCount = tab.columnCount(); // weiterhin 9
tab.setTable("MyTable");
tab.select();
colCount = tab.columnCount(); // Jetzt wieder 10
[code]

Kann mir jemand erklären, warum die Änderungen, die ich am Modell vornehme mit dem database.commit() nicht auf die eigentliche Datenbank übertragen werden? Vor allem, weil mir überall durch true signalisiert wird, dass meine Aufrufe erfolgreich waren.

Ist das ein Bug oder ein Feature? Oder ist der Fehler doch eher vor dem Bildschirm zu suchen?  :)

Danke, für eure Hilfe.

Re: QSqlTableModel removeColumn / insertColumn - nichts pass

Verfasst: 22. Januar 2014 12:45
von sigvdr
Remove count columns from the parent model....
Das steht in der Doku zu QSqlTableModel::removeColumn: from the parent model
Damit ist möglicherweise nicht die Tabelle der SQL Datenbank gemeint.
Eine Reorganisation einer SQL Tabelle hätte ich auch nicht von dem QSqlTableModel erwartet.

Gruß Sig

Re: QSqlTableModel removeColumn / insertColumn - nichts pass

Verfasst: 22. Januar 2014 13:05
von TheClerk
sigvdr hat geschrieben: Eine Reorganisation einer SQL Tabelle hätte ich auch nicht von dem QSqlTableModel erwartet.
Naja removeRow funktioniert ja. Und da es die Funktion removeColumn nun mal gibt, hatte ich schon erwartet, dass sie analog zu removeRow funktioniert. Aber das scheint nicht der Fall zu sein. Trotzdem Danke, für Deine Antwort.