📄 tablestrudlg2.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 + -