summaryrefslogtreecommitdiffstats
path: root/src/sql/models/qsqltablemodel.cpp
diff options
context:
space:
mode:
authorMark Brand <mabrand@mabrand.nl>2012-02-14 23:45:44 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-06 06:34:31 +0100
commit698e620aad68d702c32b62e8114fe12a7b3e2ca5 (patch)
tree9a092ddff5dac97401214b06e59eb49c44955169 /src/sql/models/qsqltablemodel.cpp
parent463bd32fe5120d3954d93b6792050ac47796467f (diff)
QSqlTableModel: derive primary values from database values
Primary values are used to map a row in the model to a row in the database table. It is critically important between submitting a change and the following select (which refreshes the query) to have updated primary values. Otherwise, if the change affected the primary values, additional changes before select will misbehave. Change-Id: I5d08dd70ac5d3f06cd9d3186a439f4c80a037c2d Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
Diffstat (limited to 'src/sql/models/qsqltablemodel.cpp')
-rw-r--r--src/sql/models/qsqltablemodel.cpp11
1 files changed, 1 insertions, 10 deletions
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index d31e4bc335..a2999b30c4 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -201,16 +201,7 @@ bool QSqlTableModelPrivate::exec(const QString &stmt, bool prepStatement,
QSqlRecord QSqlTableModelPrivate::primaryValues(int row) const
{
- Q_Q(const QSqlTableModel);
- if (cache.value(row).op() == Insert)
- return QSqlRecord();
-
- QSqlRecord values(primaryIndex.isEmpty() ? rec : primaryIndex);
-
- for (int i = 0; i < values.count(); ++i)
- values.setValue(i, q->QSqlQueryModel::data(createIndex(row, rec.indexOf(values.fieldName(i))), Qt::EditRole));
-
- return values;
+ return cache.value(row).primaryValues(primaryIndex.isEmpty() ? rec : primaryIndex);
}
/*!