From 7785227214cdabfb07ff7e425e1f41aa86fb5faf Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Wed, 6 Jul 2011 17:08:50 +0200 Subject: [PATCH] use nameToIndex() instead of duplicating code Change-Id: If55541aa8a2345f90984d8b82bee0c3ebb01a605 Reviewed-by: Yunqiao Yin --- src/sql/models/qsqlrelationaltablemodel.cpp | 7 ++++++- src/sql/models/qsqltablemodel.cpp | 6 +----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp index df7cf1e..a21c051 100644 --- a/src/sql/models/qsqlrelationaltablemodel.cpp +++ b/src/sql/models/qsqlrelationaltablemodel.cpp @@ -303,7 +303,12 @@ int QSqlRelationalTableModelPrivate::nameToIndex(const QString &name) const QString fieldname = name; if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName)) fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName); - return baseRec.indexOf(fieldname); + int idx = baseRec.indexOf(fieldname); + if (idx == -1) { + // If the name is an alias we can find it here. + idx = QSqlTableModelPrivate::nameToIndex(name); + } + return idx; } void QSqlRelationalTableModelPrivate::clearEditBuffer() diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp index e44c315..226f2c7 100644 --- a/src/sql/models/qsqltablemodel.cpp +++ b/src/sql/models/qsqltablemodel.cpp @@ -1344,12 +1344,8 @@ bool QSqlTableModel::setRecord(int row, const QSqlRecord &record) QSqlTableModelPrivate::clearGenerated(mrow.rec); mrow.primaryValues = d->primaryValues(indexInQuery(createIndex(row, 0)).row()); } - QString fieldName; for (int i = 0; i < record.count(); ++i) { - fieldName = record.fieldName(i); - if (d->db.driver()->isIdentifierEscaped(fieldName, QSqlDriver::FieldName)) - fieldName = d->db.driver()->stripDelimiters(fieldName, QSqlDriver::FieldName); - int idx = mrow.rec.indexOf(fieldName); + int idx = d->nameToIndex(record.fieldName(i)); if (idx == -1) { isOk = false; } else { -- 2.7.4