O
O
Oleg Seledets2018-06-29 22:26:12
MySQL
Oleg Seledets, 2018-06-29 22:26:12

Removing and editing mysql row from tableView?

Hello, there is a table in the mysql database, 19 columns.
It is being filled through QTableView.
is it possible to:
1) select a row in the tableView and press the delete button, and so that it is deleted both in the display and from the table.
2) select a row in the tableView and press the edit button, and so that the selected cells fit each into the corresponding field, lineEdit, dateEdit?
and how to do it?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
O
Oleg Seledets, 2018-07-02
@oleja1ee7


Removal
void MainWindow::on_del_butt_clicked()
{
    QSqlQueryModel *setquery1 = new QSqlQueryModel;
    QSqlTableModel *model = new QSqlTableModel;
    QItemSelectionModel *selectModel = ui->tableView->selectionModel();
    if(!selectModel->selectedRows().isEmpty())   //проверяем выделили ли строку (не пустая ли)
    {
       int nr = selectModel->selectedRows().first().row();  //вписываем номер строки
       if (QMessageBox::Yes == QMessageBox::question(this, "Удалить?",
                             "Уверены?",
                             QMessageBox::Yes|QMessageBox::No))
       {
            //ui->dir_excel->setText(ui->tableView->model()->data(ui->tableView->model()->index(nr,0)).toString());
            QString indid = ui->tableView->model()->data(ui->tableView->model()->index(nr,0)).toString();
            setquery1->setQuery("DELETE FROM ships WHERE id="+indid+";");
            model->setTable("ships");
            model->select();
            ui->tableView->setModel(model);
            setquery1->setHeaderData(1, Qt::Horizontal, "№ судо-потока");
            setquery1->setHeaderData(2, Qt::Horizontal, "Наименование судна");
            setquery1->setHeaderData(3, Qt::Horizontal, "Флаг");
            setquery1->setHeaderData(4, Qt::Horizontal, "Проект судна");
            setquery1->setHeaderData(5, Qt::Horizontal, "Состав судна");
            setquery1->setHeaderData(6, Qt::Horizontal, "Проект состава");
            setquery1->setHeaderData(7, Qt::Horizontal, "Судовладелец");
            setquery1->setHeaderData(8, Qt::Horizontal, "Груз (пассажиры)");
            setquery1->setHeaderData(9, Qt::Horizontal, "Тоннаж (балласт)");
            setquery1->setHeaderData(10, Qt::Horizontal, "Осадка (см)");
            setquery1->setHeaderData(11, Qt::Horizontal, "Пункт отправления");
            setquery1->setHeaderData(12, Qt::Horizontal, "Местоположение\n(река, км с.х.)");
            setquery1->setHeaderData(13, Qt::Horizontal, "Дата выхода из\n пункта отправления");
            setquery1->setHeaderData(14, Qt::Horizontal, "Пункт назначения");
            setquery1->setHeaderData(15, Qt::Horizontal, "Местоположение\n(река, км с.х.)2");
            setquery1->setHeaderData(16, Qt::Horizontal, "Дата прибытия в\n пункт назначения");
            setquery1->setHeaderData(17, Qt::Horizontal, "Дата отметки судна\n при пересечении\n границы бассейна");
            setquery1->setHeaderData(18, Qt::Horizontal, "Наименование бассейна");
            setquery1->setHeaderData(19, Qt::Horizontal, "Диспетчер ");
            ui->tableView->setModel(setquery1);
            ui->tableView->setColumnHidden(0, true);
            ui->tableView->horizontalHeader()->setStyleSheet("QHeaderView::section { background-color:silver }");
       }
    }
    else
    {
        //сообщение о том, что строка пуста
        QMessageBox::information(0, "Ошибка", "Строка не выделена.");
    }

}

and editing through UPDATE

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question