⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setupasso.cpp

📁 跨平台,多数据库查看编辑和查询工具,平台支持windows,linux,数据库支持oracle,odbc,mysql,slite等
💻 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 + -