diff --git a/src/AddRecordDialog.cpp b/src/AddRecordDialog.cpp index d43c7d43..406e745d 100644 --- a/src/AddRecordDialog.cpp +++ b/src/AddRecordDialog.cpp @@ -112,7 +112,7 @@ public: } }; -AddRecordDialog::AddRecordDialog(DBBrowserDB& db, const sqlb::ObjectIdentifier& tableName, QWidget* parent, const QString &pseudo_pk) +AddRecordDialog::AddRecordDialog(DBBrowserDB& db, const sqlb::ObjectIdentifier& tableName, QWidget* parent, const std::vector& pseudo_pk) : QDialog(parent), ui(new Ui::AddRecordDialog), pdb(db), @@ -184,7 +184,8 @@ void AddRecordDialog::populateFields() QStringList pk; // Initialize fields, fks and pk differently depending on whether it's a table or a view. - if (pseudo_pk.isNull()) + const sqlb::ObjectPtr obj = pdb.getObjectByName(curTable); + if (obj->type() == sqlb::Object::Table) { sqlb::TablePtr m_table = pdb.getObjectByName(curTable); fields = m_table->fields; @@ -195,7 +196,8 @@ void AddRecordDialog::populateFields() sqlb::ViewPtr m_view = pdb.getObjectByName(curTable); fields = m_view->fields; fks.fill(sqlb::ConstraintPtr(nullptr), fields.size()); - pk = QStringList(pseudo_pk); + for(const auto& col : pseudo_pk) + pk << QString::fromStdString(col); } for(uint i = 0; i < fields.size(); i++) diff --git a/src/AddRecordDialog.h b/src/AddRecordDialog.h index 2da0d991..3fea0f20 100644 --- a/src/AddRecordDialog.h +++ b/src/AddRecordDialog.h @@ -19,7 +19,7 @@ class AddRecordDialog : public QDialog Q_OBJECT public: - explicit AddRecordDialog(DBBrowserDB& pdb, const sqlb::ObjectIdentifier& tableName, QWidget* parent = nullptr, const QString& pseudo_pk = QString()); + explicit AddRecordDialog(DBBrowserDB& pdb, const sqlb::ObjectIdentifier& tableName, QWidget* parent = nullptr, const std::vector& pseudo_pk = {}); ~AddRecordDialog() override; protected: @@ -46,7 +46,7 @@ private: Ui::AddRecordDialog* ui; DBBrowserDB& pdb; sqlb::ObjectIdentifier curTable; - QString pseudo_pk; + std::vector pseudo_pk; }; #endif diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 06f292d9..65880ca4 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -967,7 +967,7 @@ void MainWindow::addRecord() void MainWindow::insertValues() { - QString pseudo_pk = m_browseTableModel->hasPseudoPk() ? QString::fromStdString(m_browseTableModel->pseudoPk().front()) : QString(); + std::vector pseudo_pk = m_browseTableModel->hasPseudoPk() ? m_browseTableModel->pseudoPk() : std::vector(); AddRecordDialog dialog(db, currentlyBrowsedTableName(), this, pseudo_pk); if (dialog.exec()) populateTable();