src/sql/models/qsqlquerymodel.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/src/sql/models/qsqlquerymodel.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/src/sql/models/qsqlquerymodel.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -314,6 +314,7 @@
     QSqlRecord newRec = query.record();
     bool columnsChanged = (newRec != d->rec);
     bool hasQuerySize = query.driver()->hasFeature(QSqlDriver::QuerySize);
+    bool hasNewData = (newRec != QSqlRecord()) || !query.lastError().isValid();
 
     if (d->colOffsets.size() != newRec.count() || columnsChanged)
         d->initColOffsets(newRec.count());
@@ -328,13 +329,13 @@
     d->error = QSqlError();
     d->query = query;
     d->rec = newRec;
-   
+
     if (mustClearModel)
         endRemoveRows();
-    
-    d->atEnd = false;    
 
-    if (columnsChanged)
+    d->atEnd = false;
+
+    if (columnsChanged && hasNewData)
         reset();
 
     if (!query.isActive() || query.isForwardOnly()) {
@@ -417,7 +418,7 @@
                                    const QVariant &value, int role)
 {
     Q_D(QSqlQueryModel);
-    if (orientation != Qt::Horizontal || section < 0)
+    if (orientation != Qt::Horizontal || section < 0 || columnCount() <= section)
         return false;
 
     if (d->headers.size() <= section)