ich hab ein etwas komisches Problem. Ich versuche eine Zeile eines Tablemodels per record zu updaten, sobald ich aber dann submitAll() aufrufe, enthält die geupdatete Zeile wieder die alten Werte. Was noch merkwürdiger ist, ist die Tatasche, dass der Code eigentlich 1:1 von einer anderen Stelle kopiert ist, wo er anstandslos funktioniert
Konstruktor:
Code: Alles auswählen
tmNotes = new QSqlTableModel(this);
tmNotes->setTable(tableName);
tmNotes->setEditStrategy(QSqlTableModel::OnManualSubmit);
tmNotes->select();Code: Alles auswählen
for (int i = 0; i < updatedRecords.size(); i++)
{
tmNotes->setFilter("id = " + QString::number(updatedRecords.id));
tmNotes->select();
// Deleted
if (updatedRecords.delDate != 0)
{
if (tmNotes->rowCount() == 1)
{
tmNotes->removeRow(0);
}
tmNotes->setFilter("");
tmNotes->select();
}
else
{
record.setValue("id", updatedRecords.id);
.
.
.
.
(viele Updatefelder)
}
// Falls der Datensatz existiert wird er updated
if (tmNotes->rowCount() == 1)
{
if (!tmNotes->setRecord(0, record))
{
tmNotes->setFilter("");
tmNotes->select();
return;
}
}
else
{
if (!tmNotes->insertRecord(-1, record))
{
tmNotes->setFilter("");
tmNotes->select();
return;
}
}
// Logisch, hier sind noch alle Daten korrekt
QMessageBox::information(this, "vorher", record.value("subject").toString());
record = tmNotes->record(0);
// Hier sind die Daten immer noch korrekt, also in der Cached-Table
QMessageBox::information(this, "nachher", record.value("subject").toString());
if (!tmNotes->submitAll())
{
return;
}
record = tmNotes->record(0);
// Nicht mehr korrekt
QMessageBox::information(this, "schluss", record.value("subject").toString());
}Gruß Baz