Расчетная сумма в интерфейсе не сохраняется в БД SQLlite, сохраняется только другая сумма - PullRequest
0 голосов
/ 12 мая 2018

У меня проблемы с расчетами. При сборке и тестировании системы правильное количество, отображаемое в интерфейсе, не отображается / не сохраняется в базе данных. Сумма отличается от той, что в интерфейсе.

Примечание:

  1. ВЫБРАТЬ СУММУ (TotalPrice) ОТ ПРОДАНА (скриншот таблицы Sold будет прикреплен вместе.
  2. Я прикреплю скриншоты ниже. Взгляните на это, чтобы получить ясную картину ситуации.
  3. Я пометил код проблемы комментарием // <- ЭТО -> // .

Вот мой код:

void CashRegister::on_pushButton_next_clicked()
{
    ui->tableView->show();
    ui->pushButton_finish->show();
    ui->label_totalAmount->show();

    QString receiptNo = ui->label_receiptNum->text();
    QString itemSelect = ui->comboBox_itemID->currentText();
    QString qtySold = ui->lineEdit_qtySold->text();
    QDate currentDate = QDate::currentDate();   //<--Solved-->//
    //QString totalPrice1 = ui->label_totalAmount->text();

    double price=0, totalPrice=0;

    QSqlQuery myqry;
    myqry.exec("SELECT ItemPrice, ItemName FROM Item WHERE ItemId='"+itemSelect+"' ");
    if (myqry.next())
        price = myqry.value(0).toDouble();

    totalPrice = price * qtySold.toInt();

    QString totalPriceString = QString::number(totalPrice);

    myqry.prepare("INSERT INTO Sold (ReceiptId, ItemId, SoldQuantity, TotalPrice) VALUES ('"+receiptNo+"', '"+itemSelect+"', '"+qtySold+"', '"+totalPriceString+"') ");
    myqry.exec();

    ui->comboBox_itemID->setCurrentIndex(0);
    ui->lineEdit_qtySold->clear();

    myqry.prepare("SELECT Item.ItemId, Item.ItemName, Item.ItemPrice, Sold.SoldQuantity FROM Item, Sold WHERE Item.ItemId = Sold.ItemId AND Sold.ReceiptId='"+receiptNo+"' ");
    myqry.exec();


    QSqlQueryModel *myModel = new QSqlQueryModel();
    myModel->setQuery(myqry);
    ui->tableView->setModel(myModel);

    double sum = 0;

    myqry.exec("SELECT SUM(TotalPrice) FROM Sold WHERE ReceiptId = '"+receiptNo+"' ");
    if (myqry.next())
        sum += myqry.value(0).toDouble();

    ui->label_totalAmount->setText("TOTAL AMOUNT: RM" + QString::number(sum));

    QString totalPriceReceipt = QString::number(sum);

    //<--THIS-->//
    myqry.prepare("INSERT INTO Receipt (ReceiptId, ReceiptDate, ReceiptAmount) VALUES ('"+receiptNo+"', '"+currentDate.toString()+"', '"+totalPriceReceipt+"') ");
    myqry.exec();
}

Different amount in Interface and DB

Sold Table

...