Example #1
2
        void FenPrincipale::submitChangement()
        {
            QSqlTableModel *model = qobject_cast<QSqlTableModel *>(tabless->model());
            model->database().transaction();
               if (model->submitAll()) {
                   model->database().commit();
               } else {
                   model->database().rollback();
                   QMessageBox::warning(this, tr("Cached Table"),
                                        tr("The database reported an error: %1")
                                        .arg(model->lastError().text()));
               }

        }
Example #2
1
void Database::deactivateUser(QString &userName)
{
    QSqlTableModel model;
    model.setTable("user");
    model.select();

    for (int i=0; i<model.rowCount(); ++i)
    {
        QSqlRecord record = model.record(i);
        if (record.value("name").toString()==userName)
        {
            record.setValue("isActive", false);
            model.setRecord(i, record);
            model.submitAll();
            break;
        }
    }
}
void CDeleteAclTask::updateRules(int ruleId,int cmdType)
{
	QSqlTableModel model;
	model.setTable("aclrules");
	QString filter1=QString("id=%1").arg(ruleId);
	model.setFilter(filter1);
	model.select();

	if (model.rowCount()==1)
	{
		QSqlRecord record=model.record(0);
		record.setValue("cmdtype",cmdType);
		model.setRecord(0,record);
	}

	model.submitAll();
	//QString error=model.lastError().text();
	//QMessageBox::information(this, tr("information"), error);
}
Example #4
0
void Database::saveUnits(QString userName, QList<Unit> units)
{
    QSqlTableModel model;
    model.setTable("user");
    model.select();
    QString saveName;

    for (int i=0; i<model.rowCount(); ++i)
    {
        QSqlRecord record = model.record(i);
        if (record.value("name").toString()==userName)
        {
            saveName=record.value("id").toString();
            break;
        }
    }
    saveName.prepend("save");



    model.setTable(saveName);
    int row=0, line=0;
    model.select();
    model.removeRows(row, model.rowCount());
    model.submitAll();

    while(line<units.size())
    {
        model.insertRows(row,1);
        model.setData(model.index(row,0), line+1);
        model.setData(model.index(row,1), units[line].imageFileName);
        model.setData(model.index(row,2), units[line].faceLeft);
        model.setData(model.index(row,3), units[line].vLocation);
        model.setData(model.index(row,4), units[line].hLocation);
        model.setData(model.index(row,5), units[line].hitPoints);
        model.setData(model.index(row,6), units[line].totalHitPoints);
        model.setData(model.index(row,7), units[line].actionTime);
        model.setData(model.index(row,8), units[line].actionRate);
        model.setData(model.index(row,9), units[line].movementRange);
        model.setData(model.index(row,10), units[line].attackRange);
        model.setData(model.index(row,11), units[line].attackPower);
        model.setData(model.index(row,12), units[line].status);
        model.setData(model.index(row,13), units[line].maskFileName);
        model.setData(model.index(row,14), units[line].team);
        model.setData(model.index(row,15), units[line].unitWorth);
        model.submitAll();
        line++;

    }

}
bool DatabaseHandler::writeCensus(census * obj) {
    qDebug() << "Writing object data to database.";
    QSqlTableModel table;
    table.setTable("census");
    table.setFilter("rcns_id=" + QString::number(obj->id) + " AND usr='******'");
    table.select();
    // get record structure from db
    QSqlRecord record(table.record());
    // initialize record with census-structure values
    setRecordTable(&record, obj);

    // insert or update records in db
    if (table.rowCount() == 0) { //INSERT
        qDebug() << "Insert!";
        // remove first entry of record
        // auto increment of id is handled by postgres
        record.remove(0);
        bool done = table.insertRecord(-1,record);
        qDebug() << table.lastError();
        return done;
    } else { //UPDATE
        qDebug() << "Update!";
        record.setValue("fcns_id",table.record(0).value(0).toInt());
        bool check = true;
        check = check && table.setRecord(0, record);
        check = check && table.submitAll();
        qDebug() << table.lastError();
        return check;
    }
    return true;
}
Example #6
0
void MaterialSaverDB::saveTemplateChapter( StockMaterial* tmpl )
{
    if( ! tmpl ) {
        kDebug() << "Parameter error, zero material!";
        return;
    }
    dbID id = tmpl->getID();
    dbID chapId = tmpl->chapterId();

    QSqlTableModel model;
    model.setTable("stockMaterial");
    QString templID = id.toString();
    model.setFilter( "matID=" + templID );
    model.select();

    QSqlRecord buffer = model.record();

    if( model.rowCount() > 0)
    {
        kDebug() << "Updating material chapter " << templID << endl;
        buffer = model.record(0);
        buffer.setValue( "chapterID", chapId.toString() );
        model.setRecord(0, buffer);
        model.submitAll();
    } else {
        kDebug() << "Could not update material chapter, not found with id " << templID;
    }
}
Example #7
0
bool MaterialSaverDB::saveTemplate( StockMaterial *mat )
{
    bool res = true;

    // Transaktion ?

    QSqlTableModel model;
    model.setTable("stockMaterial");
    QString templID = QString::number( mat->getID() );
    model.setFilter( "matID=" + templID );
    model.select();

    QSqlRecord buffer = model.record();

    if( model.rowCount() > 0)
    {
        kDebug() << "Updating material " << mat->getID() << endl;

        // mach update
        buffer = model.record(0);
        fillMaterialBuffer( buffer, mat, false );
        model.setRecord(0, buffer);
        model.submitAll();
    }
    else
    {
        // insert
        kDebug() << "Creating new material database entry" << endl;

        fillMaterialBuffer( buffer, mat, true );
        model.insertRecord(-1, buffer);
        model.submitAll();

        /* Jetzt die neue Template-ID selecten */
        dbID id = KraftDB::self()->getLastInsertID();
        kDebug() << "New Database ID=" << id.toInt() << endl;

        if( id.isOk() ) {
            mat->setID( id.toInt() );
            templID = id.toString();
        } else {
            kDebug() << "ERROR: Kann AUTOINC nicht ermitteln" << endl;
            res = false;
        }
    }
    return res;
}
Example #8
0
void MainWindow::importData()
{
	int exam_id;
	QString dataFileName = QFileDialog::getOpenFileName(this,tr("Import Data From a CSV File"),QDir::homePath(),tr("CSV File (*.csv)"));
	if(dataFileName.isEmpty())
		return;
	QFile dataFile(dataFileName);
	if(!dataFile.open(QIODevice::ReadOnly))
	{
		QMessageBox::critical(this,tr("Open File Failed"),tr("Cannot open selected file"));;
		return;
	}

	QSqlTableModel* student = m_scoreView->studentListModel();
	QSqlTableModel* exam = m_scoreView->examListModel();
	QSqlRelationalTableModel* score = m_scoreView->scoreListModel();

	QFileInfo tmp(dataFileName);
	QString exam_name = tmp.baseName();
	exam->setFilter(QString("name = \'%1\'").arg(exam_name));
	if(exam->rowCount() == 1)
	{
		QSqlRecord rq = exam->record(0);
		exam_id = rq.value("id").toInt();
	}
	else
	{
		exam->insertRow(0);
		exam->setData(exam->index(0,Global::Exam_Name),exam_name);
		exam->submitAll();
		exam->setFilter(QString("name = \'%1\'").arg(exam_name));
		QSqlRecord rq = exam->record(0);
		exam_id = rq.value("id").toInt();
	}

	QHash<QString,int> studentMap;
	for(int row = 0;row < student->rowCount();++row)
		studentMap.insert(student->data(student->index(row,1)).toString(),student->data(student->index(row,0)).toInt());

	QTextStream in(&dataFile);
	QString record = in.readLine();
	QStringList candidate_seps;
	candidate_seps << ";" << "," << "\t" << " ";
	QString real_sep;
	bool is_legal = false;
	QStringList cols;
	foreach(real_sep, candidate_seps)
	{
		cols = record.split(real_sep);
		if(cols.size() == 11)
		{
			is_legal = true;
			break;
		}
	}
void ChengjiaoQianyueDialog::on_pushButton_3_clicked(){
    qDebug() << "add";
    QSqlTableModel * model = this->dbcon->qianyue;
    int row = this->tableViewqianyue->currentIndex().row();
    model->setData(model->index(row, 0), this->comboBoxFang->currentText());
    model->setData(model->index(row, 1), this->comboBoxKe->currentText());
    model->setData(model->index(row, 2), this->comboBoxRen->currentText());
    model->setData(model->index(row, 3), this->spinBoxYongjin->text().toInt());
    model->setData(model->index(row, 4), this->comboBoxFen->currentText());
    model->setData(model->index(row, 5), this->spinBoxBianhao->text().toInt());
    model->submitAll();
}
Example #10
0
//插入一条记录
void
Widget::CStudentDialog::insertRecord()
{
    bool ok;
    QString name = m_pNameEdit->text();
    QString Sex = m_pSexEdit->text();
    double age = m_pAgeEdit->text().toDouble( &ok );
    if( !ok ){
        QMessageBox::warning( this , "错误" , "请重新填写年龄" );
        return;
    }
    QString number = m_pNumberEdit->text();
    QString post = m_pPostEdit->text();
    QSqlTableModel table;
    table.setTable( "person" );
    table.select();

    QSqlRecord record;
    record = table.record();
    record.setValue( "name" , name );
    record.setValue( "gender" , Sex );
    record.setValue( "age" , age );
    ok = table.insertRecord( -1, record );
    if( !ok ){
        AddStudentError
    }


    table.submitAll();
    table.setTable( "person" );
    table.setFilter( tr("name = '%0'").arg( name ) );
    qDebug() << table.select();
    int id = table.record(0).value( Enum::PersonSection::Person_id ).toInt( &ok );
    if( !ok ){
        table.removeRow( 0 );
        table.submitAll();
        AddStudentError
    }
Example #11
0
void MainWindow::changeVoteMark() {
    if(ui->articleList->currentIndex().isValid()) {
        int res = changeMarkDlg->exec();

        if(res == QDialog::Accepted) {
            QSqlTableModel* mdl = mysqlDataModel->getMapTableModel();
            int rowIndex = ui->articleList->currentIndex().row();

            mdl->setData(mdl->index(rowIndex, 3), QString::fromStdString(TriangleNumber::getBindedStrID(changeMarkDlg->getVoteMark())));
            mdl->submitAll();
            mdl->select();
        }
    }
}
Example #12
0
//------------------Above Date--------------------------
void Liveinfo::UpdateRoom(int RoomNum,int change)
{
	QSqlTableModel * updateroom = new QSqlTableModel;		//修改已入住的房间
	updateroom->setTable("Room");
	updateroom->select();	
	for(int i = 0;i < updateroom->rowCount(); ++i)
	{		
		QSqlRecord Roomrecord = updateroom->record(i);
		int check_room = Roomrecord.value("Num").toInt();
		if( check_room == RoomNum )
		{
			Roomrecord.setValue("Live",change);
			updateroom->setRecord(i, Roomrecord);
		}
	}		
	updateroom->submitAll();
}
Example #13
0
    void FenPrincipale::deleteRow()
    {
        QSqlTableModel *model = qobject_cast<QSqlTableModel *>(tablemesures->model());
        if (!model)
            return;

          model->setEditStrategy(QSqlTableModel::OnManualSubmit);

        QModelIndexList currentSelection = tablemesures->selectionModel()->selectedIndexes();
        for (int i = 0; i < currentSelection.count(); ++i) {
            if (currentSelection.at(i).column() != 0)
                continue;
            model->removeRow(currentSelection.at(i).row());

           }
            model->submitAll();
            model->setEditStrategy(QSqlTableModel ::OnManualSubmit);
       }
Example #14
0
void Database::saveLevel(QString &userName, int level)
{
    QSqlTableModel model;
    model.setTable("user");
    model.select();

    for (int i=0; i<model.rowCount(); ++i)
    {
        QSqlRecord record = model.record(i);
        if (record.value("name").toString()==userName)
        {
            record.setValue("level", level);
            model.setRecord(i, record);
            model.submitAll();
            break;
        }
    }
}
Example #15
0
void Database::saveXP(QString &userName, int xp)
{
    QSqlTableModel model;
    model.setTable("user");
    model.select();

    for (int i=0; i<model.rowCount(); ++i)
    {
        QSqlRecord record = model.record(i);
        if (record.value("name").toString()==userName)
        {
            record.setValue("experiencePoints", xp);
            model.setRecord(i, record);
            model.submitAll();
            break;
        }
    }
}
Example #16
0
void MainWindow::appendDataAfterCurrent() {
    if(ui->articleList->currentIndex().isValid()) {
        int res = insertDlg->exec();

        if(res == QDialog::Accepted) {
            QSqlTableModel* mdl = mysqlDataModel->getMapTableModel();
            int newRowIndex = ui->articleList->currentIndex().row() + 1;

            if(!mysqlDataModel->articleExists(insertDlg->getArticleName().toUpper().toStdString())) {
                mdl->insertRows(newRowIndex, 1);
                mdl->setData(mdl->index(newRowIndex, 1), insertDlg->getArticleName().toUpper());
                mdl->setData(mdl->index(newRowIndex, 2), insertDlg->getArticleDescription());
                mdl->setData(mdl->index(newRowIndex, 3), QString::fromStdString(TriangleNumber::getBindedStrID(insertDlg->getVote())));

                mdl->submitAll();
                mdl->select();
            }
        }
    }
}
Example #17
0
void Database::saveUser(QString &userName, User user)
{
    QSqlTableModel model;
    model.setTable("user");
    model.select();

    for (int i=0; i<model.rowCount(); ++i)
    {
        QSqlRecord record = model.record(i);
        if (record.value("name").toString()==userName)
        {
            record.setValue("experiencePoints", user.experiencePoints);
            record.setValue("isActive", user.isActive);
            record.setValue("level", user.level);
            model.setRecord(i, record);
            model.submitAll();
            break;
        }
    }
}
Example #18
0
void loginFrame::deleteUserInfo()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("Registry.db");
    if(!db.open())
        return;
    QSqlTableModel *model = new QSqlTableModel();
    model->setTable("userlist");
    model->select();
    //删除相应行
    model->removeRow(ui->comboBox->currentIndex());
    model->submitAll();
    //修正combobox的显示
    RegistyShowID.removeAt(ui->comboBox->currentIndex());
    ui->comboBox->removeItem(ui->comboBox->currentIndex());
    ui->comboBox->setCurrentIndex(0);
    for(int i=0;i<model->rowCount();i++)
    {
        ui->comboBox->setIconSize(QSize(20,20));
        ui->comboBox->setItemIcon(i,QIcon(":/images/head.png"));
        ui->comboBox->setItemText(i,RegistyShowID.at(i).id);
    }
}
Example #19
0
bool ChangePassword::on_pushButton_clicked()
{

    if (ui->new_2->text()!= ui->new_3->text())
    {
        QMessageBox::information(this, tr("警告!"),tr("两次输入的密码不一致,请重新输入!"));
        ui->new_2->clear();
        ui->new_3->clear();
        return false;
    }
    root.open();

    QSqlTableModel *user = new QSqlTableModel(this,root);
    user->setTable("user");
    user->setFilter(tr("user='******' and password = '******'").arg(username,ui->old->text()));
    user->select();

    if (user->rowCount() <= 0)
    {
        QMessageBox::information(this, tr("警告!"),tr("密码输入错误,请重新输入!"));
        root.close();

        return false;
    }
    else
    {
        user->setData(user->index(0,1),ui->new_2->text());
        user->submitAll();
        root.close();
        QMessageBox::information(this, tr(" 修改成功!"),tr("密码修改成功!!"));
        close();
        return true;

    }
    root.close();
}
Example #20
0
void sql_intro_snippets()
{
    {
//! [26]
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("bigblue");
    db.setDatabaseName("flightdb");
    db.setUserName("acarlson");
    db.setPassword("1uTbSbAs");
    bool ok = db.open();
//! [26]
    Q_UNUSED(ok);
    }

    {
//! [27]
    QSqlDatabase firstDB = QSqlDatabase::addDatabase("QMYSQL", "first");
    QSqlDatabase secondDB = QSqlDatabase::addDatabase("QMYSQL", "second");
//! [27]
    }

    {
//! [28]
    QSqlDatabase defaultDB = QSqlDatabase::database();
//! [28] //! [29]
    QSqlDatabase firstDB = QSqlDatabase::database("first");
//! [29] //! [30]
    QSqlDatabase secondDB = QSqlDatabase::database("second");
//! [30]
    }

    {
    // SELECT1
//! [31]
    QSqlQuery query;
    query.exec("SELECT name, salary FROM employee WHERE salary > 50000");
//! [31]

//! [32]
    while (query.next()) {
        QString name = query.value(0).toString();
        int salary = query.value(1).toInt();
        qDebug() << name << salary;
    }
//! [32]
    }

    {
    // FEATURE
//! [33]
    QSqlQuery query;
    int numRows;
    query.exec("SELECT name, salary FROM employee WHERE salary > 50000");

    QSqlDatabase defaultDB = QSqlDatabase::database();
    if (defaultDB.driver()->hasFeature(QSqlDriver::QuerySize)) {
        numRows = query.size();
    } else {
        // this can be very slow
        query.last();
        numRows = query.at() + 1;
    }
//! [33]
    }

    {
    // INSERT1
//! [34]
    QSqlQuery query;
    query.exec("INSERT INTO employee (id, name, salary) "
               "VALUES (1001, 'Thad Beaumont', 65000)");
//! [34]
    }

    {
    // NAMED BINDING
//! [35]
    QSqlQuery query;
    query.prepare("INSERT INTO employee (id, name, salary) "
                  "VALUES (:id, :name, :salary)");
    query.bindValue(":id", 1001);
    query.bindValue(":name", "Thad Beaumont");
    query.bindValue(":salary", 65000);
    query.exec();
//! [35]
    }

    {
    // POSITIONAL BINDING
//! [36]
    QSqlQuery query;
    query.prepare("INSERT INTO employee (id, name, salary) "
                  "VALUES (?, ?, ?)");
    query.addBindValue(1001);
    query.addBindValue("Thad Beaumont");
    query.addBindValue(65000);
    query.exec();
//! [36]
    }

    {
    // UPDATE1
//! [37]
    QSqlQuery query;
    query.exec("UPDATE employee SET salary = 70000 WHERE id = 1003");
//! [37]
    }

    {
    // DELETE1
//! [38]
    QSqlQuery query;
    query.exec("DELETE FROM employee WHERE id = 1007");
//! [38]
    }

    {
    // TRANSACTION
//! [39]
    QSqlDatabase::database().transaction();
    QSqlQuery query;
    query.exec("SELECT id FROM employee WHERE name = 'Torild Halvorsen'");
    if (query.next()) {
        int employeeId = query.value(0).toInt();
        query.exec("INSERT INTO project (id, name, ownerid) "
                   "VALUES (201, 'Manhattan Project', "
                   + QString::number(employeeId) + ')');
    }
    QSqlDatabase::database().commit();
//! [39]
    }

    {
    // SQLQUERYMODEL1
//! [40]
    QSqlQueryModel model;
    model.setQuery("SELECT * FROM employee");

    for (int i = 0; i < model.rowCount(); ++i) {
        int id = model.record(i).value("id").toInt();
        QString name = model.record(i).value("name").toString();
        qDebug() << id << name;
    }
//! [40]
    }

    {
    // SQLTABLEMODEL1
//! [41]
    QSqlTableModel model;
    model.setTable("employee");
    model.setFilter("salary > 50000");
    model.setSort(2, Qt::DescendingOrder);
    model.select();

    for (int i = 0; i < model.rowCount(); ++i) {
        QString name = model.record(i).value("name").toString();
        int salary = model.record(i).value("salary").toInt();
        qDebug() << name << salary;
    }
//! [41]
    }

    {
    // SQLTABLEMODEL2
    QSqlTableModel model;
    model.setTable("employee");

//! [42]
    for (int i = 0; i < model.rowCount(); ++i) {
        QSqlRecord record = model.record(i);
        double salary = record.value("salary").toInt();
        salary *= 1.1;
        record.setValue("salary", salary);
        model.setRecord(i, record);
    }
    model.submitAll();
//! [42]

    // SQLTABLEMODEL3
    int row = 1;
    int column = 2;
//! [43]
    model.setData(model.index(row, column), 75000);
    model.submitAll();
//! [43]

    // SQLTABLEMODEL4
//! [44]
    model.insertRows(row, 1);
    model.setData(model.index(row, 0), 1013);
    model.setData(model.index(row, 1), "Peter Gordon");
    model.setData(model.index(row, 2), 68500);
    model.submitAll();
//! [44]

//! [45]
    model.removeRows(row, 5);
//! [45] //! [46]
    model.submitAll();
//! [46]
    }
}
Example #21
0
void DocumentSaverDB::saveDocumentPositions( KraftDoc *doc )
{
    DocPositionList posList = doc->positions();

    // invert all pos numbers to avoid a unique violation
    // FIXME: We need non-numeric ids
    QSqlQuery upq;
    QString queryStr = "UPDATE docposition SET ordNumber = -1 * ordNumber WHERE docID=";
    queryStr +=  doc->docID().toString();
    queryStr += " AND ordNumber > 0";
    upq.prepare( queryStr );
    upq.exec();

    int ordNumber = 1;

    QSqlTableModel model;
    model.setTable("docposition");
    model.setEditStrategy(QSqlTableModel::OnManualSubmit);

    QVector<int> deleteIds;

    DocPositionListIterator it( posList );
    while( it.hasNext() ) {
        DocPositionBase *dpb = it.next();

        DocPosition *dp = static_cast<DocPosition*>(dpb);
        QSqlRecord record ;
        bool doInsert = true;

        int posDbID = dp->dbId().toInt();
        kDebug() << "Saving Position DB-Id: " << posDbID << endl;

        if( dp->toDelete() ) {
            kDebug() << "Delete item " << dp->dbId().toString() << endl;

            // store the id to delete, rather than killing the model index.
            // did that before here, which removed wrong items.
            deleteIds << posDbID;

            // delete all existing attributes no, which will not disturb the model index
            dp->attributes().dbDeleteAll( dp->dbId() );
            continue;
        }

        if( posDbID > -1 ) {
            const QString selStr = QString("docID=%1 AND positionID=%2").arg( doc->docID().toInt() ).arg( posDbID );
            // kDebug() << "Selecting with " << selStr << endl;
            model.setFilter( selStr );
            model.select();
            if ( model.rowCount() > 0 ) {
                if( ! dp->toDelete() )
                    record = model.record(0);
                doInsert = false;
            } else {
                kError() << "ERR: Could not select document position record" << endl;
                return;
            }
        } else {
            // The record is new
            record = model.record();
        }

        if( record.count() > 0 ) {
            // kDebug() << "Updating position " << dp->position() << " is " << dp->text() << endl;
            QString typeStr = PosTypePosition;
            double price = dp->unitPrice().toDouble();

            if ( dp->type() == DocPositionBase::ExtraDiscount ) {
                typeStr = PosTypeExtraDiscount;
            }

            record.setValue( "docID",     QVariant(doc->docID().toInt()));
            record.setValue( "ordNumber", QVariant(ordNumber));
            record.setValue( "text",      QVariant(dp->text()));
            record.setValue( "postype",   QVariant(typeStr));
            record.setValue( "amount",    QVariant(dp->amount()));
            int unitId = dp->unit().id();
            record.setValue( "unit",      QVariant(unitId));
            record.setValue( "price",     QVariant(price));
            record.setValue( "taxType",   QVariant(dp->taxType()));

            ordNumber++; // FIXME

            if( doInsert ) {
                kDebug() << "Inserting!" << endl;
                model.insertRecord(-1, record);
                model.submitAll();
                dp->setDbId( KraftDB::self()->getLastInsertID().toInt() );
            } else {
                kDebug() << "Updating!" << endl;
                model.setRecord(0, record);
                model.submitAll();
            }
        } else {
            kDebug() << "ERR: No record object found!" << endl;
        }

        dp->attributes().save( dp->dbId() );

        QSqlError err = model.lastError();
        if( err.type() != QSqlError::NoError ) {
            kDebug() << "SQL-ERR: " << err.text() << " in " << model.tableName() << endl;
        }

    }
    model.submitAll();

    /*  remove the docpositions that were marked to be deleted */
    if( deleteIds.count() ) {
        QSqlQuery delQuery;
        delQuery.prepare( "DELETE FROM docposition WHERE positionID=:id" );
        foreach( int id, deleteIds ) {
            kDebug() << "Deleting attribute id " << id;
            delQuery.bindValue( ":id", id );
            delQuery.exec();
        }
Example #22
0
void Browser::on_submitAction_triggered()
{
    QSqlTableModel * tm = qobject_cast<QSqlTableModel *>(table->model());
    if (tm)
        tm->submitAll();
}
Example #23
0
bool DocumentSaverDB::saveDocument(KraftDoc *doc )
{
    bool result = false;
    if( ! doc ) return result;

    QSqlTableModel model;
    model.setTable("document");

    QSqlRecord record;

    kDebug() << "############### Document Save ################" << endl;

    if( doc->isNew() ) {
        record = model.record();
    } else {
      model.setFilter("docID=" + doc->docID().toString());
      model.select();
      if ( model.rowCount() > 0 ) {
        record = model.record(0);
      } else {
        kError() << "Could not select document record" << endl;
        return result;
      }
       // The document was already saved.
    }

    if( !doc->isNew() && doc->docTypeChanged() && doc->newIdent() ) {
        // an existing doc has a new document type. Fix the doc number cycle and pick a new ident
        DocType dt( doc->docType() );
        QString ident = dt.generateDocumentIdent( doc );
        doc->setIdent( ident );
    }

    fillDocumentBuffer( record, doc );

    if( doc->isNew() ) {
      kDebug() << "Doc is new, inserting" << endl;
      if( !model.insertRecord(-1, record)) {
          QSqlError err = model.lastError();
          kDebug() << "################# SQL Error: " << err.text();
      }
      model.submitAll();

      dbID id = KraftDB::self()->getLastInsertID();
      doc->setDocID( id );

      // get the uniq id and write it into the db
      DocType dt( doc->docType() );
      QString ident = dt.generateDocumentIdent( doc );
      doc->setIdent( ident );
      model.setFilter("docID=" + id.toString());
      model.select();
      if ( model.rowCount() > 0 ) {
        model.setData(model.index(0, 1), ident);
        model.submitAll();
      }

    } else {
      kDebug() << "Doc is not new, updating #" << doc->docID().intID() << endl;

      record.setValue( "docID", doc->docID().toString() );

      model.setRecord(0, record);
      model.submitAll();
    }

    saveDocumentPositions( doc );

    kDebug() << "Saved document no " << doc->docID().toString() << endl;

    return result;
}
void estore::on_confirm_clicked()
{

    int num = ui->num->text().toInt();
    QSqlTableModel model;
    model.setTable("commodity");
    model.setFilter(tr("number = '%1'").arg(num));
    model.select();
    if(model.rowCount()==1)//查询到有一个结果
    {
        QString name =model.record(0).value("name").toString();
        QString description =model.record(0).value("description").toString();
        double primeprice = model.record(0).value("primeprice").toDouble();
        double saleprice = model.record(0).value("saleprice").toDouble();
        int column = model.record(0).value("column").toInt();
        int sum = model.record(0).value("sum").toInt();
        double discount = model.record(0).value("discount").toDouble();
        QString publishmentbrand =model.record(0).value("publishmentbrand").toString();
        QString ISBNmaterialcolumn =model.record(0).value("ISBNmaterialcolumn").toString();
        QString date =model.record(0).value("date").toString();
        QString pagenumbersizeweight =model.record(0).value("pagenumbersizeweight").toString();
        QString si = ui->sum->text();
        int suminput= si.toInt();
        int numflag1=1;
        for(int i=0;i<si.size();i++)
            if ((si[i]<'0')||(si[i]>'9'))
            {
                numflag1=0;
                break;
            }
        if(si.size()==0)
        {
            QMessageBox::critical(NULL, "错误","数量未填写!");
        }
        else if(numflag1==0)
        {
            QMessageBox::critical(NULL, "错误","数量填写格式错误!");

        }


        else if(suminput > sum )
        {
            QMessageBox::warning(NULL, tr("错误"), tr("输入商品数量大于库存!"));
        }
        else
        {
            confirm c(name, suminput);
            if(c.exec()==QDialog::Accepted)
            {

                if (addTrolley(num, name, description, primeprice, saleprice,column, suminput, discount, publishmentbrand, ISBNmaterialcolumn, date, pagenumbersizeweight))
                {
                    model.setData(model.index(0,6),sum-suminput);
                    model.submitAll();
                    QMessageBox::information(NULL, tr("成功"), tr("商品成功添加至购物车!"));
                    accept();
                }
            }

        }

    }else
    {
        QMessageBox::warning(NULL, tr("错误"), tr("未查询到商品!"));
    }
}
void event::on_confirm_clicked()
{
    QString discount = ui->discount->text();

    int numflag1=1,a=1;
    for(int i=0;i<discount.size();i++)
        if ((discount[i]<'0')||(discount[i]>'9'))
        {
            numflag1=0;
            break;
        }
    if(numflag1==0)
    {
        QMessageBox::critical(NULL, "警告","折扣输入格式有误!");
        a=0;
    }
    float dis = discount.toFloat();

    if(dis<1||dis>100)
    {
        QMessageBox::critical(NULL, "警告","折扣输入格式有误!");
        a=0;
    }
    float d =1-dis/100;
    if(ui->book->isChecked())
    {
        QSqlTableModel model;
        model.setTable("commodity");
        model.setFilter(QObject::tr("column = 1 ")); //根据类别进行筛选
        model.select(); //显示结果
        for (int i = 0; i < model.rowCount(); i++)
        {
            qDebug()<<model.record(i);
            qDebug()<<d;
            model.setData(model.index(i,7),d);
            double p= model.record(i).value("primeprice").toFloat();
            double a = d*p;
            int yy = (int)(a*100+1.0e-6);
            double b = (double)yy/100;
            model.setData(model.index(i,4),b);
            model.submitAll();
            qDebug()<<model.record(i);
        }
        if(a==1)
        {
            QMessageBox::information(NULL, "成功","信息更改成功!");
            accept();
        }
    }
    else if(ui->clothes->isChecked())
    {
        QSqlTableModel model;
        model.setTable("commodity");
        model.setFilter(QObject::tr("column = 2 ")); //根据类别进行筛选
        model.select(); //显示结果
        for (int i = 0; i < model.rowCount(); i++)
        {
            qDebug()<<model.record(i);
            qDebug()<<d;
            model.setData(model.index(i,7),d);
            double p= model.record(i).value("primeprice").toFloat();
            double a = d*p;
            int yy = (int)(a*100+1.0e-6);
            double b = (double)yy/100;
            model.setData(model.index(i,4),b);
            model.submitAll();
            qDebug()<<model.record(i);
        }
        if(a==1)
        {
            QMessageBox::information(NULL, "成功","信息更改成功!");
            accept();
        }
    }
    else if(ui->food->isChecked())
    {
        QSqlTableModel model;
        model.setTable("commodity");
        model.setFilter(QObject::tr("column = 3 ")); //根据类别进行筛选
        model.select(); //显示结果
        qDebug()<<model.rowCount();
        for (int i = 0; i < model.rowCount(); i++)
        {
            qDebug()<<model.record(i);
            qDebug()<<d;
            model.setData(model.index(i,7),d);
            double p= model.record(i).value("primeprice").toFloat();
            double a = d*p;
            int yy = (int)(a*100+1.0e-6);
            double b = (double)yy/100;
            model.setData(model.index(i,4),b);
            model.submitAll();
            qDebug()<<model.record(i);
        }
        if(a==1)
        {
            QMessageBox::information(NULL, "成功","信息更改成功!");
            accept();
        }
    }
    else if(ui->electronic->isChecked())
    {
        QSqlTableModel model;
        model.setTable("commodity");
        model.setFilter(QObject::tr("column = 4 ")); //根据类别进行筛选
        model.select(); //显示结果
        for (int i = 0; i < model.rowCount(); i++)
        {
            qDebug()<<model.record(i);
            qDebug()<<d;
            model.setData(model.index(i,7),d);
            double p= model.record(i).value("primeprice").toFloat();
            double a = d*p;
            int yy = (int)(a*100+1.0e-6);
            double b = (double)yy/100;
            model.setData(model.index(i,4),b);
            model.submitAll();
            qDebug()<<model.record(i);
        }
        if(a==1)
        {
            QMessageBox::information(NULL, "成功","信息更改成功!");
            accept();
        }
    }
    else
    {
        QMessageBox::critical(NULL, "警告","请选择商品!");
    }
}