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

📄 tablestrudlg2.cpp

📁 用C++写的数据库软件
💻 CPP
字号:
// TableStruDlg2.cpp : implementation file
//

#include "stdafx.h"
#include "fksqxt.h"
#include "TableStruDlg2.h"
#include "ShowStringDlg.h"
#include "InsertTableAttr.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTableStruDlg2 dialog


CTableStruDlg2::CTableStruDlg2(CWnd* pParent /*=NULL*/)
	: CDialog(CTableStruDlg2::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTableStruDlg2)
	m_TableName = _T("");
	//}}AFX_DATA_INIT
	m_strTableBH = "";
}


void CTableStruDlg2::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTableStruDlg2)
	DDX_Control(pDX, IDC_LIST1, m_ListCtrl);
	DDX_Text(pDX, IDC_STATIC_TABLE, m_TableName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTableStruDlg2, CDialog)
	//{{AFX_MSG_MAP(CTableStruDlg2)
	ON_BN_CLICKED(IDC_InsertTableAttr, OnInsertTableAttr)
	ON_BN_CLICKED(IDC_DeleteAttr, OnDeleteAttr)
	ON_BN_CLICKED(IDC_ShengCheng, OnShengCheng)
	ON_BN_CLICKED(IDC_CANCEL, OnCancel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTableStruDlg2 message handlers

BOOL CTableStruDlg2::OnInitDialog() 
{
	CDialog::OnInitDialog();
	if( m_strTableBH == "")
	{
//		MessageBox("error !");
		return FALSE;
	}
	// TODO: Add extra initialization here
	// 连接数据库
	m_encaAdo.InitADOConn("","", "", "dbo.FKSQXT"); 

	// 查询记录
	CString strSQL;
	strSQL.Format("SELECT * FROM TABLESTRUZD where BH = '%s'",m_strTableBH);
	m_rs = m_encaAdo.GetRecordSet(LPCSTR(strSQL)); 

	
	m_ListCtrl.ModifyStyle(0,LVS_REPORT);
	m_ListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

	//title

	m_ListCtrl.InsertColumn(1,"属性代码",LVCFMT_LEFT,90);
	m_ListCtrl.InsertColumn(2,"属性名称",LVCFMT_LEFT,110);
	m_ListCtrl.InsertColumn(3,"类型",LVCFMT_LEFT,70);
	m_ListCtrl.InsertColumn(4,"是否主键",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(5,"字典宽度",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(6,"字典小数",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(7,"本表宽度",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(8,"本表小数",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(9,"系统保留",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(10,"查对照表",LVCFMT_LEFT,60);

	strSQL.Empty();
	strSQL.Format("select MC from TABLEZD where BH ='%s'",m_strTableBH);
	EncaADO encaAdo;
	_RecordsetPtr rs = encaAdo.GetRecordSet(LPCSTR(strSQL));
	_variant_t var = rs->GetCollect("MC");
	CString str;
	str.Format("(%s) ",m_strTableBH);
	if(var.vt != VT_NULL)
	{
		CString str2 = LPCSTR(_bstr_t(var));
		str += str2;
	}
	m_TableName = str;
	UpdateData();
	CDialog::UpdateData(FALSE);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CTableStruDlg2::UpdateData()
{
	CString strSQL;
	strSQL.Format("SELECT * FROM TABLESTRUZD where BH = '%s'",m_strTableBH);

	m_rs = m_encaAdo.GetRecordSet(LPCSTR(strSQL)); 
	int a=-1;
	while(!m_rs->adoEOF)
	{
		a++ ;
		m_rs->MoveNext();
	}

	if(a < 0)
	{
		return;
	}
	
/*	CShowStringDlg dlg;
	dlg.SetString(strSQL);
	dlg.DoModal();
	return ;
*/
	m_ListCtrl.DeleteAllItems();
	_variant_t var;
	int iCount = 0;
	m_rs->MoveFirst();
	while( !m_rs->adoEOF )
	{
		if(iCount >= m_ListCtrl.GetItemCount())
		{
			m_ListCtrl.InsertItem(iCount,"");
		}
		var = m_rs->GetCollect("ZD");//属性代码
		if(var.vt != VT_NULL)
		{
				m_ListCtrl.SetItemText(iCount,0,(LPCSTR)_bstr_t(var));
		}

		var = m_rs->GetCollect("ZDMC");//属性名称
		if(var.vt != VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,1,(LPCSTR)_bstr_t(var));
		}

		var = m_rs->GetCollect("TYPE");//类型
		if(var.vt != VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,2,(LPCSTR)_bstr_t(var));
		}
		
		var = m_rs->GetCollect("isKey");//是否主键
		if(var.vt != VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,3,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("DIC_LEN");//字典宽度
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,4,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("DIC_DEC");//字典小数
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,5,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("TABLE_LEN");//本表宽度
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,6,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("TABLE_DEC");//本表小数
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,7,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("SYSTEM");//系统保留
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,8,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("HELP");//查对照表
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,9,(LPCSTR)_bstr_t(var));
		}
		m_ListCtrl.SetItemData(iCount,iCount);
		m_rs->MoveNext();
		iCount++;
	}
}

void CTableStruDlg2::setTableBH(CString bh)
{
	m_strTableBH = bh;
}

void CTableStruDlg2::OnInsertTableAttr() 
{
	// TODO: Add your control notification handler code here

	CInsertTableAttr dlg;
	dlg.setTableBH(m_strTableBH);
	dlg.DoModal();
	UpdateData();
}

void CTableStruDlg2::OnDeleteAttr() 
{
	if(m_ListCtrl.GetSelectionMark() == -1)
	{
		MessageBox("没选择任何行");
	}
	if(MessageBox("\t是否删除?","确认删除",MB_YESNO) != IDYES)
	{
		return;
	}
	
	CString ZD = m_ListCtrl.GetItemText(m_ListCtrl.GetSelectionMark(),0);
	
	CString strSQL;
	strSQL.Format("delete from TABLESTRUZD where DB_BH = 'FKSQXT' AND BH ='%s' AND ZD ='%s'",m_strTableBH,ZD);
	if(m_encaAdo.ExecuteSQL(LPCSTR(strSQL)))
	{
		MessageBox("删除成功!");
		UpdateData();
	}
	else
	{
		MessageBox("删除失败!");
	}
	
}

void CTableStruDlg2::OnShengCheng() 
{
	// TODO: Add your control notification handler code here
	EncaADO encaAdo;
	_RecordsetPtr rs;
	CString strSQL;
	strSQL.Format("select * from TABLEZD where BH = '%s'",m_strTableBH);

	CShowStringDlg dlg;
//	dlg.SetString(strSQL);
//	dlg.DoModal();

	rs = encaAdo.GetRecordSet(LPCSTR(strSQL));
	int RecordCount = -1;
	while(!rs->adoEOF)
	{
		RecordCount++ ;
		rs->MoveNext();
	}
	if(RecordCount < 0)
	{
		MessageBox("此表不存在");
		return;
	}
	rs->MoveFirst();
	_variant_t var = rs->GetCollect("EXIST");
	CString strYes = "是";
	CString strDB = "";
	if(var.vt != VT_NULL)
	{
		strDB = LPCSTR(_bstr_t(var));
	}
	if(!strYes.Compare(strDB))
	{
		MessageBox("出错,该二维表之前已经生成");
		return ;
	}
/*	m_ListCtrl.InsertColumn(1,"属性代码",LVCFMT_LEFT,90);
	m_ListCtrl.InsertColumn(2,"属性名称",LVCFMT_LEFT,110);
	m_ListCtrl.InsertColumn(3,"类型",LVCFMT_LEFT,70);
	m_ListCtrl.InsertColumn(4,"是否主键",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(5,"字典宽度",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(6,"字典小数",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(7,"本表宽度",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(8,"本表小数",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(9,"系统保留",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(10,"查对照表",LVCFMT_LEFT,60);
*/
	CString str;
	str.Format("create table %s (",m_strTableBH);
	
	for(int i=0;i<m_ListCtrl.GetItemCount();i++)
	{
		CString ZD   = m_ListCtrl.GetItemText(i,0);
		CString TYPE = m_ListCtrl.GetItemText(i,2);
		CString LEN  = m_ListCtrl.GetItemText(i,4);
		CString DEC  = m_ListCtrl.GetItemText(i,5);
		
		str += ZD + " ";

		if(!TYPE.Compare("int") ||
			!TYPE.Compare("datetime") ||
			!TYPE.Compare("float") ||
			!TYPE.Compare("binary"))
		{
			str +=  TYPE;
		}
		else if(!TYPE.Compare("char") ||
			!TYPE.Compare("nchar")||
			!TYPE.Compare("nvarchar"))
		{
			str += TYPE;
			str += "(";
			str += LEN;
			str += ")";
		}
		else if(! TYPE.Compare("numeric"))
		{
			str += TYPE;
			str += "(";
			str += LEN;
			str += ",";
			str += DEC;
			str += ")";
		}
		str += ",";
	}
//	dlg.SetString(str);
//	dlg.DoModal();
	str = str.Mid(0,str.GetLength()-1);
	str += ");";
//	MessageBox(str);
	if(encaAdo.ExecuteSQL(LPCSTR(str)))
	{
		MessageBox("成功!");
		str.Empty();
		str.Format("update TABLEZD set EXIST = '%s' where BH = '%s'","是",m_strTableBH);
		encaAdo.ExecuteSQL(LPCSTR(str));
	}
	else
	{
		MessageBox("失败");
	}
}

void CTableStruDlg2::OnCancel() 
{
	this->EndDialog(0);	
}

⌨️ 快捷键说明

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