void UserForm:: createTableModels() { QSqlRelationalTableModel* model = new QSqlRelationalTableModel(); model->setTable("good"); model->setRelation(Producer, QSqlRelation("company", "companyid", "name")); model->setRelation(Catalog, QSqlRelation("catalog", "id", "name")); model->setHeaderData(Producer, Qt::Horizontal, "Producer"); model->setHeaderData(Name, Qt::Horizontal, "Name"); model->setHeaderData(Price, Qt::Horizontal, "Price, $"); model->setHeaderData(Description, Qt::Horizontal, "Description"); model->setHeaderData(Catalog, Qt::Horizontal, "Catalog"); model->setFilter("catalog_id IS NOT NULL"); // model->removeColumn(5); model->select(); productsModel = model; model = new QSqlRelationalTableModel(); model->setTable("`order`"); model->setRelation(goodId, QSqlRelation("good", "goodid", "name")); model->setFilter("user_login='******'"); model->select(); model->setEditStrategy(QSqlTableModel::OnRowChange); model->removeColumn(3); model->removeColumn(2); model->setHeaderData(orderId, Qt::Horizontal, "Order #"); model->setHeaderData(goodId, Qt::Horizontal, "Product"); model->setHeaderData(date, Qt::Horizontal, "Date"); model->setHeaderData(address, Qt::Horizontal, "Address to deliver"); ordersModel = model; }
QSqlTableModel *EmployeeDataModel::initializeViewModel() { //TODO: id als locale Konstante QSqlRelationalTableModel *model = new QSqlRelationalTableModel(this); model->setTable(QLatin1String("employee_view")); model->setEditStrategy(QSqlTableModel::OnFieldChange); model->setHeaderData(POS_EMPLOYEE_FIRSTNAME, Qt::Horizontal, QObject::tr("Firstname")); model->setHeaderData(POS_EMPLOYEE_LASTNAME, Qt::Horizontal, QObject::tr("Lastname")); model->select(); return model; }
int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); if(!createConnection(db)) return 1; /* QSqlQueryModel * mode = new QSqlQueryModel; mode->setQuery("select prod_id, vend_name, prod_name, prod_price from products, vendors where products.vend_id = vendors.vend_id", db); mode->setHeaderData(0, Qt::Horizontal, "prod_id"); mode->setHeaderData(1, Qt::Horizontal, "vend_name"); mode->setHeaderData(2, Qt::Horizontal, "prod_name"); mode->setHeaderData(3, Qt::Horizontal, "prod_price"); */ QSqlRelationalTableModel * mode = new QSqlRelationalTableModel; mode->setTable("products"); QSqlRelation relation("vendors", "vend_id", "vend_name"); mode->setRelation(1, relation); mode->select(); mode->setHeaderData(0, Qt::Horizontal, "prod_id"); mode->setHeaderData(1, Qt::Horizontal, "vend_name"); mode->setHeaderData(2, Qt::Horizontal, "prod_name"); mode->setHeaderData(3, Qt::Horizontal, "prod_price"); QTableView * tableview = new QTableView(&w); tableview->verticalHeader()->hide(); tableview->setModel(mode); w.setCentralWidget(tableview); w.resize(600, 400); w.show(); return a.exec(); }
void BadgeWindow::timer() { DialogTimer dialogTimer; bool saveRequest; QString taskName; QTime elapsedTime; saveRequest = dialogTimer.getTaskInfo(taskName, elapsedTime); if (saveRequest) { DialogTask dialog; QSqlRelationalTableModel *taskModel; taskModel = new QSqlRelationalTableModel(); taskModel->setEditStrategy(QSqlTableModel::OnManualSubmit); taskModel->setTable("task"); qDebug() << "Day" << QDate::currentDate().toString("yyyy-MM-dd") << endl; taskModel->setFilter("day='" + QDate::currentDate().toString("yyyy-MM-dd") + "'"); //taskModel.setEditStrategy(QSqlTableModel::OnFieldChange); taskModel->setHeaderData(0, Qt::Horizontal, QObject::tr("ID")); taskModel->setHeaderData(1, Qt::Horizontal, QObject::tr("Date")); taskModel->setHeaderData(2, Qt::Horizontal, QObject::tr("Elapsed")); //taskModel->setHeaderData(3, Qt::Horizontal, QObject::tr("Attivita'")); taskModel->setRelation(3, QSqlRelation("attivita", "id", "attivita")); taskModel->select(); // TODO: if current date don't exist create it dialog.openTask("Task", "Elapsed", taskModel, QDate::currentDate(), "task", elapsedTime, taskName); delete taskModel; } }
void ui_module_articulos::update_table_articulos() { //Limipiamos el model anterior QAbstractItemModel * anteriorModel = ui->tableView_articulos->model(); if(anteriorModel) delete anteriorModel; //Creamos el nuevo model QSqlRelationalTableModel * model = new QSqlRelationalTableModel(); model->setTable(v_articuloProveedor); /* model->setRelation(GRUPO,QSqlRelation(e_grupo,pk_grupo,descripcion)); model->setRelation(MARCA,QSqlRelation(e_marca,pk_marca,descripcion)); model->setRelation(MEDIDA,QSqlRelation(e_medida,pk_medida,descripcion)); model->setJoinMode(QSqlRelationalTableModel::LeftJoin); model->setFilter("habilitado=1");*/ for(int i=0;i<num_header;i++) { model->setHeaderData(i,Qt::Horizontal,tableHeaders[i]); } if(model->select()) { ui->tableView_articulos->setModel(model); ui->busqueda->setTableModel(model); } else { qDebug()<<model->query().lastError(); qDebug()<<model->query().lastQuery(); QMessageBox::information(this,"Error","Ocurrio un error al cargar la información"); } //Ocultamos columnas ui->tableView_articulos->setColumnHidden(GRUPO,true); ui->tableView_articulos->setColumnHidden(HABILITADO,true); ui->tableView_articulos->horizontalHeader()->setResizeMode(QHeaderView::Stretch); //qDebug()<<model->query().lastQuery()<<endl; }
HandbookDialog::HandbookDialog(QString tableName, QString tableRusName, const QSqlDatabase &database, QWidget *parent, QStringList hiddenColumns): m_database(database), mHiddenColumns(hiddenColumns), QDialog(parent), ui(new Ui::HandbookDialog) { ui->setupUi(this); ui->label->setText(tableRusName); this->setWindowTitle("Редактирование справочника: " + tableRusName); QMap<QString, QString> rusFieldNames = DataBaseExpert::fieldTranslationMap(m_database); auto ralTablesForFields = DataBaseExpert::ralationTablesForFields(m_database); m_record = database.record(tableName); QSqlRelationalTableModel * model = new QSqlRelationalTableModel(0, database); model->setTable(tableName); for (int i = 0; i < m_record.count(); ++i) { QString fieldName = m_record.fieldName(i); if (fieldName.size() > 3 && fieldName.right(3) == "_FK") { model->setRelation(i, QSqlRelation(ralTablesForFields[fieldName], "UID", "NAME")); } } model->setEditStrategy(QSqlTableModel::OnManualSubmit); //model->removeColumn(0); model->select(); for (int i = 0; i < m_record.count(); ++i) { model->setHeaderData(i, Qt::Horizontal, rusFieldNames[m_record.fieldName(i)]); if (mHiddenColumns.contains(m_record.fieldName(i), Qt::CaseInsensitive)) { ui->tableView->setColumnHidden(i, true); } } ui->tableView->setModel(model); ui->tableView->setItemDelegate(new MySqlRelationDelegate(ui->tableView)); for (int i = 0; i < m_record.count(); ++i) { if (mHiddenColumns.contains(m_record.fieldName(i), Qt::CaseInsensitive)) { ui->tableView->setColumnHidden(i, true); } } connect(ui->btnInsert, &QPushButton::clicked, [model]() { model->insertRow(model->rowCount()); }); connect(ui->btnSave, &QPushButton::clicked, [model]() { if (!model->submitAll()) qDebug() << model->lastError().text(); }); connect(ui->btnRevert, &QPushButton::clicked, [model]() { model->revertAll(); }); connect(ui->btnExit, &QPushButton::clicked, [this]() { this->accept(); }); ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeMode::Stretch); connect(ui->tableView, &QTableView::customContextMenuRequested, [this, &tableName, model] (const QPoint& pos) { QMenu * contextMenu = new QMenu(tr("Выбор действия со строкой"), ui->tableView); QAction* insertAction = new QAction(tr("Добавить"), contextMenu); contextMenu->addAction(insertAction); connect(insertAction, &QAction::triggered, [this, &model] () { model->insertRow(model->rowCount()); }); QAction * delAction = new QAction(tr("Удалить"), contextMenu); contextMenu->addAction(delAction); connect(delAction, &QAction::triggered, [this, &pos, &tableName, model] () { QPoint transformPos = pos; transformPos.setX(20); QModelIndex index = ui->tableView->indexAt(transformPos); QString recordId = ui->tableView->model()->data(index).toString(); QSqlQuery query("DELETE FROM " + tableName + " WHERE UID = " + recordId, m_database); query,exec(); model->submitAll(); }); contextMenu->exec(ui->tableView->viewport()->mapToGlobal(pos)); }); // connect(ui->label_2, &QLabel::linkActivated, [this]() // { // WebReportDialog dlg(this->ui->label_2->text(), this); // dlg.exec(); // }); }
void Carga::loadCargas(QDate start, QDate end){ QSqlRelationalTableModel *model = new QSqlRelationalTableModel(0, QSqlDatabase::database()); model->setTable("cargas"); model->setRelation(2, QSqlRelation("cereales", "id", "cereal")); model->setRelation(15, QSqlRelation("transportista", "cuit", "nombre")); model->setRelation(8, QSqlRelation("cliente", "cuit", "nombre")); model->setRelation(5, QSqlRelation("localizacion", "id", "lugar")); model->setRelation(7, QSqlRelation("tipo_operacion", "id", "name")); model->setRelation(11, QSqlRelation("boolean", "id", "name")); model->setRelation(12, QSqlRelation("boolean", "id", "name")); model->setRelation(13, QSqlRelation("boolean", "id", "name")); model->setRelation(14, QSqlRelation("boolean", "id", "name")); model->setRelation(19, QSqlRelation("boolean", "id", "name")); QString filter = "fecha BETWEEN '" + start.toString("yyyy-MM-dd") + "' AND '" + end.toString("yyyy-MM-dd") + "'"; model->setFilter(filter); model->setHeaderData(1, Qt::Horizontal, QObject::tr("Fecha")); model->setHeaderData(2, Qt::Horizontal, QObject::tr("Grano")); model->setHeaderData(3, Qt::Horizontal, QObject::tr("Cosecha")); model->setHeaderData(4, Qt::Horizontal, QObject::tr("Kilos")); model->setHeaderData(5, Qt::Horizontal, QObject::tr("Origen")); model->setHeaderData(6, Qt::Horizontal, QObject::tr("N° C porte")); model->setHeaderData(7, Qt::Horizontal, QObject::tr("Tipo")); model->setHeaderData(8, Qt::Horizontal, QObject::tr("Cliente")); model->setHeaderData(9, Qt::Horizontal, QObject::tr("Tarifa a cobrar")); model->setHeaderData(10, Qt::Horizontal, QObject::tr("Tarifa a pagar")); model->setHeaderData(11, Qt::Horizontal, QObject::tr("Se cobra")); model->setHeaderData(12, Qt::Horizontal, QObject::tr("Se paga")); model->setHeaderData(13, Qt::Horizontal, QObject::tr("Pagado")); model->setHeaderData(14, Qt::Horizontal, QObject::tr("Cobrado")); model->setHeaderData(15, Qt::Horizontal, QObject::tr("Transportista")); model->setHeaderData(16, Qt::Horizontal, QObject::tr("Observaciones")); model->setHeaderData(17, Qt::Horizontal, QObject::tr("Origen")); model->setHeaderData(18, Qt::Horizontal, QObject::tr("Destino")); model->setHeaderData(19, Qt::Horizontal, QObject::tr("En depósito")); model->select(); ui->cargas->setModel(model); ui->cargas->setItemDelegate(new QSqlRelationalDelegate(ui->cargas)); ui->cargas->setSortingEnabled(true); ui->cargas->setVisible(false); ui->cargas->resizeColumnsToContents(); ui->cargas->setVisible(true); // OCULTAR COLUMNAS CARGAS ui->cargas->setColumnHidden(0,true); ui->pushButton_3->setDisabled(true); }
QSqlRelationalTableModel *EmployeeDataModel::initializeRelationalModel() { //TODO: id als locale Konstante QSqlRelationalTableModel *model = new QSqlRelationalTableModel(this); model->setTable(QLatin1String("employee")); model->setEditStrategy(QSqlTableModel::OnFieldChange); model->setRelation(POS_EMPLOYEE_TITLE_ID, QSqlRelation(QLatin1String("title"), QLatin1String("title_id"), QLatin1String("name"))); model->setRelation(POS_EMPLOYEE_ADDRESS_ID, QSqlRelation(QLatin1String("address"), QLatin1String("address_id"), QLatin1String("address"))); model->setRelation(POS_EMPLOYEE_DEPARTMENT_ID, QSqlRelation(QLatin1String("department"), QLatin1String("department_id"), QLatin1String("name"))); model->setRelation(POS_EMPLOYEE_FUNCTION_ID, QSqlRelation(QLatin1String("function"), QLatin1String("function_id"), QLatin1String("name"))); model->setRelation(POS_EMPLOYEE_COMPUTER_ID, QSqlRelation(QLatin1String("computer"), QLatin1String("computer_id"), QLatin1String("network_name"))); model->setRelation(POS_EMPLOYEE_PRINTER_ID, QSqlRelation(QLatin1String("printer"), QLatin1String("printer_id"), QLatin1String("network_name"))); model->setRelation(POS_EMPLOYEE_PHONE_ID, QSqlRelation(QLatin1String("phone"), QLatin1String("phone_id"), QLatin1String("number"))); model->setRelation(POS_EMPLOYEE_MOBILE_ID, QSqlRelation(QLatin1String("mobile"), QLatin1String("mobile_id"), QLatin1String("number"))); model->setRelation(POS_EMPLOYEE_FAX_ID, QSqlRelation(QLatin1String("fax"), QLatin1String("fax_id"), QLatin1String("number"))); model->setHeaderData(POS_EMPLOYEE_ID, Qt::Horizontal, QObject::tr("ID")); model->setHeaderData(POS_EMPLOYEE_NR, Qt::Horizontal, QObject::tr("Emp.Number")); model->setHeaderData(POS_EMPLOYEE_GENDER, Qt::Horizontal, QObject::tr("Gender")); model->setHeaderData(POS_EMPLOYEE_TITLE_ID, Qt::Horizontal, QObject::tr("Title")); model->setHeaderData(POS_EMPLOYEE_FIRSTNAME, Qt::Horizontal, QObject::tr("Firstname")); model->setHeaderData(POS_EMPLOYEE_LASTNAME, Qt::Horizontal, QObject::tr("Lastname")); model->setHeaderData(POS_EMPLOYEE_ADDRESS_ID, Qt::Horizontal, QObject::tr("address")); model->setHeaderData(POS_EMPLOYEE_BIRTHDAY, Qt::Horizontal, QObject::tr("Birthday")); model->setHeaderData(POS_EMPLOYEE_EMAIL, Qt::Horizontal, QObject::tr("EMail")); model->setHeaderData(POS_EMPLOYEE_DATACARE, Qt::Horizontal, QObject::tr("Datacare")); model->setHeaderData(POS_EMPLOYEE_ACTIVE, Qt::Horizontal, QObject::tr("Active")); model->setHeaderData(POS_EMPLOYEE_STARTDATE, Qt::Horizontal, QObject::tr("StartDate")); model->setHeaderData(POS_EMPLOYEE_ENDDATE, Qt::Horizontal, QObject::tr("EndDate")); model->setHeaderData(POS_EMPLOYEE_DEPARTMENT_ID, Qt::Horizontal, QObject::tr("Department")); model->setHeaderData(POS_EMPLOYEE_FUNCTION_ID, Qt::Horizontal, QObject::tr("Function")); model->setHeaderData(POS_EMPLOYEE_COMPUTER_ID, Qt::Horizontal, QObject::tr("Computer")); model->setHeaderData(POS_EMPLOYEE_PRINTER_ID, Qt::Horizontal, QObject::tr("Printer")); model->setHeaderData(POS_EMPLOYEE_PHONE_ID, Qt::Horizontal, QObject::tr("Phone")); model->setHeaderData(POS_EMPLOYEE_MOBILE_ID, Qt::Horizontal, QObject::tr("Mobile")); model->setHeaderData(POS_EMPLOYEE_FAX_ID, Qt::Horizontal, QObject::tr("Fax")); model->setHeaderData(POS_EMPLOYEE_EMPLOYEE_ACCOUNT_ID, Qt::Horizontal, QObject::tr("Accounts")); model->setHeaderData(POS_EMPLOYEE_EMPLOYEE_DOCUMENT_ID, Qt::Horizontal, QObject::tr("Documents")); model->setHeaderData(POS_EMPLOYEE_LAST_UPDATE, Qt::Horizontal, QObject::tr("Last Update")); model->select(); return model; }