I have this class:
#include <QSqlError>
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include "itemsell.h"
#include "ui_ItemSell.h"
#include "sales.h"
ItemSell
::ItemSell(QWidget *parent
) : ui(new Ui::ItemSell)
{
ui->setupUi(this);
}
void ItemSell
::errorLog(QString error
) {
out << error;
log.close();
}
void ItemSell::getSale(const int& id)
{
sqlQuery = "SELECT Sales.Countity as Scoun, Sales.Totale as Stotale FROM Sales "
"JOIN Items ON Sales.ID_I = Items.ID_I "
"WHERE Sales.ID_S=" + id;
if(!query.exec(sqlQuery))
{
error
= "[" + query.
lastError().
text() + "]\t[" + query.
lastQuery() + "]\t[" + QDate::currentDate().
toString("yyyy-MM-dd") + "\t" +QTime::currentTime().
toString("hh-mm") + "]\n";
this->errorLog(error);
}
query.next();
rec = query.record();
ui->itemMat->setText(query.value(rec.indexOf("ID_I")).toString());
ui->nameSale->setText(query.value(rec.indexOf("Name")).toString());
ui->dateSale->setDate(query.value(rec.indexOf("Day")).toDate());
ui->priceSale->setText(query.value(rec.indexOf("Price")).toString());
ui->countitySale->setText(query.value(rec.indexOf("Scoun")).toString());
ui->totaleSale->setText(query.value(rec.indexOf("Stotale")).toString());
sd.setText(query.lastQuery() + "*** " + query.lastError().text());
sd.exec();
}
ItemSell::~ItemSell()
{
delete ui;
}
#include <QSqlError>
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include "itemsell.h"
#include "ui_ItemSell.h"
#include "sales.h"
ItemSell::ItemSell(QWidget *parent) :
QDialog(parent),
ui(new Ui::ItemSell)
{
ui->setupUi(this);
}
void ItemSell::errorLog(QString error)
{
QFile log("errors.log");
log.open(QFile::Append | QFile::Text);
QTextStream out(&log);
out << error;
log.close();
}
void ItemSell::getSale(const int& id)
{
sqlQuery = "SELECT Sales.Countity as Scoun, Sales.Totale as Stotale FROM Sales "
"JOIN Items ON Sales.ID_I = Items.ID_I "
"WHERE Sales.ID_S=" + id;
if(!query.exec(sqlQuery))
{
error = "[" + query.lastError().text() + "]\t[" + query.lastQuery() + "]\t[" + QDate::currentDate().toString("yyyy-MM-dd") + "\t" +QTime::currentTime().toString("hh-mm") + "]\n";
this->errorLog(error);
}
query.next();
rec = query.record();
ui->itemMat->setText(query.value(rec.indexOf("ID_I")).toString());
ui->nameSale->setText(query.value(rec.indexOf("Name")).toString());
ui->dateSale->setDate(query.value(rec.indexOf("Day")).toDate());
ui->priceSale->setText(query.value(rec.indexOf("Price")).toString());
ui->countitySale->setText(query.value(rec.indexOf("Scoun")).toString());
ui->totaleSale->setText(query.value(rec.indexOf("Stotale")).toString());
QMessageBox sd;
sd.setText(query.lastQuery() + "*** " + query.lastError().text());
sd.exec();
}
ItemSell::~ItemSell()
{
delete ui;
}
To copy to clipboard, switch view to plain text mode
And I have this slot executed when the user click on action menu:
void Store::showItem()
{
int id = ui->lstSells->model()->index(m_ind.row(), 0).data().toInt();
ItemSell *item = new ItemSell(this);
item->getSale(id);
item->exec();
}
void Store::showItem()
{
int id = ui->lstSells->model()->index(m_ind.row(), 0).data().toInt();
ItemSell *item = new ItemSell(this);
item->getSale(id);
item->exec();
}
To copy to clipboard, switch view to plain text mode
My problem is the query is never executed because an SQL error statement, it is always executed like this:
CT Sales.Countity as Scoun, Sales.Totale as Stotale FROM Sales JOIN Items ON Sales.ID_I = Items.ID_I WHERE Sales.ID_S=1
Sales.Countity as Scoun, Sales.Totale as Stotale FROM Sales JOIN Items ON Sales.ID_I = Items.ID_I WHERE Sales.ID_S=1
CT Sales.Countity as Scoun, Sales.Totale as Stotale FROM Sales JOIN Items ON Sales.ID_I = Items.ID_I WHERE Sales.ID_S=1
Sales.Countity as Scoun, Sales.Totale as Stotale FROM Sales JOIN Items ON Sales.ID_I = Items.ID_I WHERE Sales.ID_S=1
To copy to clipboard, switch view to plain text mode
While it should be like this:
SELECT Sales.Countity as Scoun, Sales.Totale as Stotale FROM Sales JOIN Items ON Sales.ID_I = Items.ID_I WHERE Sales.ID_S=1
SELECT Sales.Countity as Scoun, Sales.Totale as Stotale FROM Sales JOIN Items ON Sales.ID_I = Items.ID_I WHERE Sales.ID_S=1
To copy to clipboard, switch view to plain text mode
Bookmarks