Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 6
1

QT Запись ячейки из qtableview в базу данных mysql

13.12.2016, 13:35. Просмотров 775. Ответов 3
Метки нет (Все метки)

QT Запись ячейки из qtableview в базу данных mysql

Суть в том, что при выборе строки в поле "Продукция" и нажатии на кнопку "Изготовить" нужно считать ячейку с наименованием из строки и записать в таблицу "Готовая продукция" базы данных. Также другой колонкой в ту же запись идет текущая дата. В общем попробовал сделать так, но ничего не происходит. Для примера добавил в таблицу "Готовая продукция" как должно выглядеть.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void Pekarnya::on_make_clicked(const QModelIndex &index)
{
    finModel=new QSqlTableModel;
    finModel->setTable("gotovaya");
 
    if(index.isValid())
    {
        QDate date = QDate::currentDate();
        QString str = date.toString("yyyy/MM/dd");
 
        QSqlRecord rec=prodModel->record(index.row());
        QString id=rec.value("prodname").toString();
 
        int row = finModel->rowCount(QModelIndex());
        finModel->insertRow(row);
 
        QModelIndex aCol = finModel->index(row, 0);
        QModelIndex bCol = finModel->index(row, 1);
 
        finModel->setData(aCol, id);
        finModel->setData(bCol, str);
    }
    finModel->select();
}
Попробовал еще:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Pekarnya::on_make_clicked(const QModelIndex &index)
{
    QDate date = QDate::currentDate();
QString str = date.toString("yyyy/MM/dd");
 
QSqlRecord rec=prodModel->record(index.row());
QString id=rec.value("prodname").toString();
 
QSqlQuery query;
   query.prepare("INSERT INTO gotovaya (prodname, date) "
          "VALUES (:prodname, :date)");
   query.bindValue(":prodname", id);
   query.bindValue(":date", str);
   query.exec();
    }
тут тоже ничего не происходит

Главное для меня сделать запись в базу данных, отобразить это уже не проблема
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2016, 13:35
Ответы с готовыми решениями:

Запись в базу данных MYSQL
Здравствуйте проблема возникла в том что при записи в таблицу то там вместо текста появляется...

Как обновить базу MySQL после изменения в QTableView ?
Привет всем. 1. как можно настройть TQableView так, чтобы можно было изменить базу данных? 2. Как...

Как можно изменить базу данных с QTableView?
Привет опять С базой соеденения есть Вывожу в QTableView таблицу Как изменить в базе чтото,...

Запись в Базу данных MySQL
<html> <head> <title>Формы PHP</title> <meta http-equiv="Content-Type"...

3
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 6
13.12.2016, 14:40  [ТС] 2
Поправил код до такого:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void Pekarnya::on_make_clicked()
{
    QModelIndex index;
    QDate date = QDate::currentDate();
    QString str = date.toString("yyyy/MM/dd");
 
    QSqlRecord rec=prodModel->record(index.row());
    QString id=rec.value("prodname").toString();
 
    QSqlQuery query;
    query.prepare("INSERT INTO gotovaya (prodname, date) "
          "VALUES (:prodname, :date)");
    query.bindValue(":prodname", id);
    query.bindValue(":date", str);
    query.exec();
    if (!query.exec())
    {
        qDebug() << query.lastError();
    }
}
Теперь при нажатии на кнопку в базу заносится две записи, в обоих записях первый столбец пустой, во втором, как и надо, текущая дата.
0
Эксперт С++
1868 / 1219 / 349
Регистрация: 16.05.2013
Сообщений: 3,218
Записей в блоге: 6
13.12.2016, 14:49 3
Повторный вызов exec:
C++ (Qt)
1
2
query.exec();
    if (!query.exec())
Проверять статус запроса следует иначе:
C++ (Qt)
1
2
3
if(!query.isActive())   {
 
    }
И еще попробуйте связать по порядку:
C++ (Qt)
1
2
query.bindValue(0, id);
query.bindValue(1, str);
0
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 6
13.12.2016, 15:22  [ТС] 4
Сделал так
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void Pekarnya::on_make_clicked()
{
    QModelIndex index;
 
 
    QDate date = QDate::currentDate();
    QString str = date.toString("yyyy/MM/dd");
 
    QSqlRecord rec=prodModel->record(index.row());
    QString id=rec.value("prodname").toString();
 
//
    QSqlQuery query;
       query.prepare("INSERT INTO gotovaya (prodname, date) "
              "VALUES (:prodname, :date)");
       query.bindValue(0, id);
       query.bindValue(1, str);
       query.exec();
 
       qDebug() << query.lastError();
       qDebug() << id;
}
Запись не дублируется, но первый столбец остается пустым, и qDebug говорит, что он пустой. Вопрос как мне получить значение ячейки выделенной строки?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2016, 15:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Где ошибка? (Запись данных из массива в базу данных mysql)
Массив, генерирующий данные: $data = array(); for($i = 0; $i &lt; 100; $i++){ ...

Запись объекта в базу данных MySQL
Можно ли как-нибудь записать в базу данных MySQL объект, а потом его восстановить с помощью...

Python запись в базу данных Mysql
Привет всем. Помогите дописать код. T3: Внизу код, он работает так, пишет лог в базу. Но суть...

[PHP+MySQL] Запись в базу данных из формы
Здравствуйте! Помогите, пожалуйста, решить проблему с записью. В базу строка добавляется, но она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.