📄 setupasso.cpp
字号:
#include <QtGui>
#include <QtSql>
#include "setupasso.h"
SetupAsso::SetupAsso(QSqlDatabase *gdb,int cid,QString tn,QString fn,QWidget *parent ):QDialog(parent)
{
QApplication::setOverrideCursor(Qt::WaitCursor);
global_db=gdb;
connection_id=cid;
table_name=tn;
field_name=fn;
comboAssoTable=new QComboBox(this);
comboAssoColumn=new QComboBox(this);
comboAssoDisplay=new QComboBox(this);
QGridLayout *layout=new QGridLayout(this);
layout->setColumnStretch(1,1);
QLabel *label=new QLabel("表",this);
layout->addWidget(label,0,0);
layout->addWidget(comboAssoTable,0,1);
label=new QLabel("关联列",this);
layout->addWidget(label,1,0);
layout->addWidget(comboAssoColumn,1,1);
label=new QLabel("显示列",this);
layout->addWidget(label,2,0);
layout->addWidget(comboAssoDisplay,2,1);
QHBoxLayout *hlayout=new QHBoxLayout(this);
QDialogButtonBox *box=new QDialogButtonBox(this);
box->addButton(QDialogButtonBox::Ok);
box->addButton(QDialogButtonBox::Cancel);
connect(box,SIGNAL(accepted()), this, SLOT(onOk()));
connect(box,SIGNAL(rejected()), this,SLOT(reject()));
layout->addWidget(box,4,0,1,2,Qt::AlignCenter);
layout->setContentsMargins(30,30,30,30);
setLayout(layout);
comboAssoTable->addItem("");
QString sql=tr("select table_name from dm_table where connection_id=%1 order by table_name").arg(connection_id);
QSqlQuery query(*global_db);
if(query.exec(sql))
{
while(query.next())
{
comboAssoTable->addItem(query.record().field(0).value().toString().trimmed());
}
}
sql=tr("select asso_table_name,asso_field_name,asso_field_display from dm_field where connection_id=%1 and upper(table_name)=upper('%2') and upper(field_name)=upper('%3')").arg(connection_id).arg(table_name).arg(field_name);
if(query.exec(sql) && query.next())
{
assoTableName=query.record().field(0).value().toString().trimmed();
assoFieldName=query.record().field(1).value().toString().trimmed();
assoFieldDisplay=query.record().field(2).value().toString().trimmed();
}
connect(comboAssoTable,SIGNAL(currentIndexChanged ( const QString &)),this,SLOT(onTableChange(const QString &)));
int index=comboAssoTable->findText(assoTableName,Qt::MatchStartsWith);
comboAssoTable->setCurrentIndex(index);
query.clear();
setMinimumWidth(400);
setMinimumHeight(180);
setWindowTitle("关联表设置");
QApplication::restoreOverrideCursor();
}
SetupAsso::~SetupAsso()
{
}
void SetupAsso::onTableChange(const QString &tname)
{
QSqlQuery query(*global_db);
comboAssoColumn->clear();
comboAssoDisplay->clear();
comboAssoColumn->addItem("");
comboAssoDisplay->addItem("");
QString sql=tr("select field_name from dm_field where connection_id=%1 and upper(table_name)=upper('%2') order by field_xh").arg(connection_id).arg(tname);
if(query.exec(sql))
{
while(query.next())
{
QString fname=query.record().field(0).value().toString().trimmed();
comboAssoColumn->addItem(fname);
comboAssoDisplay->addItem(fname);
}
}
query.clear();
int index=comboAssoColumn->findText(assoFieldName,Qt::MatchStartsWith);
comboAssoColumn->setCurrentIndex(index);
index=comboAssoDisplay->findText(assoFieldDisplay,Qt::MatchStartsWith);
comboAssoDisplay->setCurrentIndex(index);
}
void SetupAsso::onOk()
{
QString tname=comboAssoTable->currentText();
QString fname=comboAssoColumn->currentText();
QString fdisplay=comboAssoDisplay->currentText();
if(fname.toUpper()==fdisplay.toUpper() && fname.length())
{
QMessageBox::warning(this,"","关联列和显示列不能为同一列!");
return;
}
QSqlQuery query(*global_db);
QString sql=tr("update dm_field set asso_table_name='%1',asso_field_name='%2',asso_field_display='%3' where connection_id=%4 and upper(table_name)=upper('%5') and upper(field_name)=upper('%6')").arg(tname).arg(fname).arg(fdisplay).arg(connection_id).arg(table_name).arg(field_name);
global_db->exec(sql);
if(global_db->lastError().isValid())
{
QMessageBox::warning(this,"",global_db->lastError().text());
return;
}
accept();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -