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

📄 managerdialog.cpp

📁 跨平台,多数据库查看编辑和查询工具,平台支持windows,linux,数据库支持oracle,odbc,mysql,slite等
💻 CPP
字号:
#include <QtSql>
#include "managerdialog.h"

extern QString g_connectName;

ManagerDialog::ManagerDialog(QWidget *parent ,QString table_name):QDialog(parent)
{
	setAttribute(Qt::WA_DeleteOnClose);
  setWindowFlags(Qt::Sheet|Qt::WindowMinMaxButtonsHint);
  QString sql;
  db=QSqlDatabase::database(g_connectName);
  QSqlQuery query(db);
  table=new TableView(this);
  QVBoxLayout *layout=new QVBoxLayout(this);
  layout->addWidget(table);
  layout->setContentsMargins(0,0,0,0);
  setLayout(layout);
	setMinimumWidth(780);
	setMinimumHeight(480);
	model=new MySqlTableModel(table,db);
	sql=tr("select table_name from dm_table where connection_id=0 and upper(table_name)=upper('%1')").arg(table_name);
	if(query.exec(sql) && query.next())
		model->setTable(query.record().field(0).value().toString());
	else
		model->setTable(table_name.toUpper());
	QApplication::setOverrideCursor(Qt::WaitCursor);
	model->selectResult();
			
	  for(int i=0;i<model->columnCount();i++)
    {     
 	     sql=tr("SELECT field_name,memo,asso_table_name,asso_field_name,asso_field_display,lower(is_primarykey) as iskey  FROM dm_field where connection_id=0 and upper(table_name)=upper('%2') and upper(field_name)=upper('%3')" ).arg(table_name).arg(model->headerData(i,Qt::Horizontal).toString());
 	     //qWarning(sql.toLatin1().data());
       query.exec(sql);     	 
       if(query.isSelect() && query.next())
       {
     	 	  QString field_name=query.record().field("field_name").value().toString().trimmed();
     	 	  QString memo=query.record().field("memo").value().toString().trimmed();
     	 	  QString iskey=query.record().field("iskey").value().toString().trimmed();
     	 	  if(iskey=="yes")
     	 	  {
     	 	  	model->setHeaderData(i,Qt::Horizontal,QVariant(QIcon(":/image/key.png")),Qt::DecorationRole);
     	 	  	//model->setHeaderData(i,Qt::Horizontal,QVariant(QColor(0,0,200)),Qt::TextColorRole);
     	 	  	continue;
     	 	  }
     	 	  
     	 	  if(memo.length()==0)
     	 	  	memo=field_name;
     	 	  QString asso_table_name=query.record().field("asso_table_name").value().toString().trimmed();
     	 	  QString asso_field_name=query.record().field("asso_field_name").value().toString().trimmed();
     	 	  QString asso_field_display=query.record().field("asso_field_display").value().toString().trimmed();     	 	  
     	 	  model->setHeaderData(i,Qt::Horizontal,QVariant(memo));
     	 	  if(asso_table_name.length()>0)
     	 	  {
     	 	  	model->setRelation(i, QSqlRelation(asso_table_name, asso_field_name, asso_field_display));
     	 	  }
       }
       query.clear();
       
    }
  model->setEditStrategy(QSqlTableModel::OnManualSubmit);	  


	table->setTableModel(model);
	table->enableAction(true);
	
	QString strTitle=table_name;
	if(table_name.toLower()=="dm_application")
		strTitle="管理应用";
	if(table_name.toLower()=="dm_connection")
		strTitle="管理连接";
	if(table_name.toLower()=="dm_table")
		strTitle="管理表";
	if(table_name.toLower()=="dm_field")
		strTitle="管理字段";
	setWindowTitle(strTitle);
	
	connect(model,SIGNAL(beforeUpdate(int, QSqlRecord &)),this,SLOT(onBeforeUpdate(int, QSqlRecord &)));
	
	
	QApplication::restoreOverrideCursor();

}

ManagerDialog::~ManagerDialog()
{

}

void	ManagerDialog::closeEvent(QCloseEvent *event)
{
	event->accept();
}

void ManagerDialog::onBeforeUpdate(int row, QSqlRecord &record)
{
		
	if(model->tableName().toLower()!="dm_field")
		return;
	QString isPrimaryKey=model->record(row).field("is_primarykey").value().toString().trimmed().toLower();
	QString assoTableName=model->record(row).field("asso_table_name").value().toString().trimmed().toLower();
	if(isPrimaryKey=="yes" && assoTableName.length()>0)
	{
		//QMessageBox::warning(this,"",tr("请注意第 %1 行:\n主键列不能设置关联表和关联字段,否则修改值无法保存!\n主键列的关联表被自动忽略!").arg(row+1));
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -