в mainWindow добавляется БД.
вот так:
bool mainWindow::createConnectionTovar()
{
QSqlDatabase db_tovar = QSqlDatabase::addDatabase("QSQLITE", "tovar");
QString file;
if (!flagSklad)
file=tr("bd")+QDir::separator()+dirCount+QDir::separator()+"tovar.db";
else
file=tr("bd")+QDir::separator()+dirCountSklad+QDir::separator()+"tovar.db";
db_tovar.setDatabaseName(file);
}
и чуть ниже приведены основные процедуры в чайлде.
void fTovCat::showModel()
{
model = new QSqlTableModel(this, DB_Tovar);
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setTable("tovar");
...
showTovar();
...
}
void fTovCat::showTovar()
{
QString filter;
if (firmFilter != "")
filter = firmFilter;
if (searchFilter != "")
if (filter != "")
filter += " AND "+searchFilter;
else
filter = searchFilter;
if (ostatokFilter != "")
if (filter != "")
filter += " AND "+ostatokFilter;
else
filter = ostatokFilter;
model->setFilter(filter);
model->select();
ui.tableView->resizeColumnsToContents();
ui.tableView->resizeRowsToContents();
}
fTovCat::fTovCat()
{
ui.setupUi(this);
...
//Подключаем БД
DB_Tovar = QSqlDatabase::database("tovar");
if (!DB_Tovar.open())
{
QMessageBox::critical(0, qApp->tr("Ошибка"),
qApp->tr("Не удалось открыть базу данных"), QMessageBox::Cancel);
}
}
void fTovCat::pbNullRecordClicked()
{
/*QStringList listDB = QSqlDatabase::connectionNames();
for (int k=0; k<listDB.count(); k++)
{
QMessageBox::information(0, "", listDB[k]);
}*/
QMessageBox::StandardButton ret;
ret = QMessageBox::warning(this, tr("Предупреждение"),
tr("Вы действительно хотите обнулить значения всех записей?"),
QMessageBox::Yes | QMessageBox::No);
if (ret == QMessageBox::No)
return;
QString search;
if (itemColumn->text(columnItem).trimmed() != "")
{
if (columnItem == 0)
search = "";
else
search = tr(" WHERE firm = '%1'").arg(itemColumn->text(columnItem).trimmed());
/*DB_Tovar.close();
if (!DB_Tovar.open())
{
QMessageBox::critical(0, qApp->tr("Ошибка"),
qApp->tr("Не удалось открыть базу данных"), QMessageBox::Cancel);
}*/
//if (DB_Tovar.transaction())
//if (!model->database().transaction())
//QMessageBox::warning(0, "", "Not work transaction");
//model->database().transaction();
//model->query().prepare(tr("UPDATE tovar SET kolvo='0'%1").arg(search));
model->query().exec(tr("UPDATE tovar SET kolvo='0'%1").arg(search));
//QMessageBox::warning(0, "", model->);
//QSqlQuery *query = new QSqlQuery(DB_Tovar);
//query->exec(tr("UPDATE tovar SET kolvo='0'%1").arg(search));
//query->finish();
//query->exec(tr("UPDATE tovar SET kolvo='0'%1").arg(search));
model->submitAll();
delete model;
/*DB_Tovar.close();
if (!DB_Tovar.open())
{
QMessageBox::critical(0, qApp->tr("Ошибка"),
qApp->tr("Не удалось открыть базу данных"), QMessageBox::Cancel);
}*/
showModel();
rbCenaClicked();
QMessageBox::information(0, tr("Информация"), tr("Количество товаров в фирме %1 обнулены!").arg(itemColumn->text(columnItem)));
}
}
в последней процедуре я ппц уже замучался... не знал как поступить.. куча проверок и комментов, за них меня не надо сильно карать.
шаблон создания БД
query->exec("create table tovar (id, code_firm, firm, name, cena_zakup, cena_kr_opt, cena_opt, cena_rozn, percent_kr_opt, percent_opt, precent_rozn, kolvo, prim)");