diff --git a/python/plugins/db_manager/db_plugins/data_model.py b/python/plugins/db_manager/db_plugins/data_model.py index 740c32b6f81..4a26d32236b 100644 --- a/python/plugins/db_manager/db_plugins/data_model.py +++ b/python/plugins/db_manager/db_plugins/data_model.py @@ -57,11 +57,16 @@ class BaseTableModel(QAbstractTableModel): return len(self._header) def data(self, index, role): - if role != Qt.DisplayRole and role != Qt.FontRole: + if role not in [Qt.DisplayRole, + Qt.EditRole, + Qt.FontRole]: return None val = self.getData(index.row(), index.column()) + if role == Qt.EditRole: + return val + if role == Qt.FontRole: # draw NULL in italic if val is not None: return None diff --git a/python/plugins/db_manager/dlg_query_builder.py b/python/plugins/db_manager/dlg_query_builder.py index da80aea1697..51e2f0fde0f 100644 --- a/python/plugins/db_manager/dlg_query_builder.py +++ b/python/plugins/db_manager/dlg_query_builder.py @@ -21,7 +21,7 @@ email : hugo dot mercier at oslandia dot com Query builder dialog, based on the QSpatialite plugin (GPLv2+) by Romain Riviere """ -from qgis.PyQt.QtCore import QObject, QEvent +from qgis.PyQt.QtCore import Qt, QObject, QEvent from qgis.PyQt.QtWidgets import QDialog, QMessageBox, QTextEdit from .ui.ui_DlgQueryBuilder import Ui_DbManagerQueryBuilderDlg as Ui_Dialog @@ -287,10 +287,17 @@ class QueryBuilderDlg(QDialog): self.ui.values.setModel(model) def query_item(self, index): - queryWord = index.data() - queryWord = ' "%s"' % queryWord - if queryWord != '': - self.ui.where.insertPlainText(queryWord) + value = index.data(Qt.EditRole) + + if value is None: + queryWord = u'NULL' + elif isinstance(value, (int, float)): + queryWord = unicode(value) + else: + queryWord = self.db.connector.quoteString(value) + + if queryWord.strip() != '': + self.ui.where.insertPlainText(u' ' + queryWord) self.ui.where.setFocus() def use_rtree(self):