#include
#include
#include "mainwindow.h"
#include "triggerwidget.h"
TriggerDialog::TriggerDialog()
{
}
void TriggerDialog::init_combobox()
{
cbTable = new QComboBox;
QSqlDatabase db = QSqlDatabase::database(conname);
cbTable->addItems(db.tables());
cbTable->addItems(db.tables(QSql::Views));
int count = cbTable->count();
for(int index=0;indexitemText(index)==tbname){
cbTable->setCurrentIndex(index);
return;
}
}
cbTable->setCurrentIndex(0);
}
void TriggerDialog::init_editor()
{
sqlEdit = new QTextEdit;
}
void TriggerDialog::init(const QString &con_name,
const QString &table_name,
const QString &trigger_name)
{
conname = con_name;
dbname = QSqlDatabase::database(con_name).databaseName();
tbname = table_name;
triggername = trigger_name;
create_flag = trigger_name.isEmpty();
QLabel *lblSql = new QLabel(QString("Sql"));
init_editor();
QLabel *lblName = new QLabel(QString("Ãû³Æ"));
txtName = new QLineEdit(triggername);
QLabel *lblTable = new QLabel(QString("±í»òÊÓͼ"));
init_combobox();
QGridLayout *grid = new QGridLayout;
grid->addWidget(lblName,0,0);
grid->addWidget(txtName,0,1);
grid->addWidget(lblTable,1,0);
grid->addWidget(cbTable,1,1);
grid->setColumnStretch(1,1);
btnOk = new QPushButton(QString("È·¶¨"));
btnCancel = new QPushButton(QString("È¡Ïû"));
connect(btnOk,SIGNAL(clicked()),this,SLOT(create()));
connect(btnCancel,SIGNAL(clicked()),this,SLOT(close()));
QHBoxLayout *hboxButtons = new QHBoxLayout;
hboxButtons->addStretch(1);
hboxButtons->addWidget(btnOk);
hboxButtons->addWidget(btnCancel);
QVBoxLayout *vboxMain = new QVBoxLayout;
vboxMain->addLayout(grid);
vboxMain->addWidget(lblSql);
vboxMain->addWidget(sqlEdit,1);
vboxMain->addLayout(hboxButtons);
setLayout(vboxMain);
if(create_flag)
setWindowTitle(QString("´´½¨´¥·¢Æ÷"));
else
{
setWindowTitle(QString("´¥·¢Æ÷%1").arg(triggername));
cbTable->setEnabled(false);
sqlEdit->setReadOnly(true);
txtName->setReadOnly(true);
}
resize(700,420);
}
void TriggerDialog::loadTrigger(const QString &sql)
{
sqlEdit->setText(sql);
}
void TriggerDialog::create()
{
if(!create_flag){
close();
return;
}
if(!check())return;
QString sql = sqlEdit->toPlainText();
QSqlDatabase db = QSqlDatabase::database(conname);
QSqlQuery q(db);
if(q.exec(sql)){
MainWindow *mw = qobject_cast(qApp->activeWindow());
if(mw!=0)mw->refresh(conname);
}else{
QSqlError se = q.lastError();
QString err = QString(
"database:%1\ndriver:%2\nerror number:%3"
"\nerror type:%4\nerror text:%5")
.arg(se.databaseText())
.arg(se.driverText())
.arg(se.number())
.arg(se.type()).arg(se.text());
QMessageBox::warning(this,QString("´´½¨´íÎó"),err);
}
close();
}
bool TriggerDialog::check()
{
return false;
}