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

📄 tabledlg.cpp

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

#include "stdafx.h"
#include "fksqxt.h"
#include "TableDlg.h"
#include "EncaADO.h"
#include "InsertTableDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTableDlg dialog


CTableDlg::CTableDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTableDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTableDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CTableDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTableDlg)
	DDX_Control(pDX, IDC_LIST1, m_ListCtrl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTableDlg, CDialog)
	//{{AFX_MSG_MAP(CTableDlg)
	ON_BN_CLICKED(IDC_InsertRow, OnInsertRow)
	ON_BN_CLICKED(IDC_DeleteRow, OnDeleteRow)
	ON_BN_CLICKED(IDC_SubmitSave, OnSubmitSave)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
	ON_BN_CLICKED(IDC_ReNew, OnReNew)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTableDlg message handlers

BOOL CTableDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	
	// 连接数据库
	m_encaAdo.InitADOConn("","", "", "dbo.FKSQXT"); 

	// 查询记录
	m_rs = m_encaAdo.GetRecordSet("SELECT * FROM TABLEZD order by ZXT "); 

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

	//title

	m_ListCtrl.InsertColumn(1,"子系统",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(2,"子系统名称",LVCFMT_LEFT,110);
	m_ListCtrl.InsertColumn(3,"二维表代码",LVCFMT_LEFT,100);
	m_ListCtrl.InsertColumn(4,"二维表名称",LVCFMT_LEFT,150);
	m_ListCtrl.InsertColumn(5,"表类别",LVCFMT_LEFT,150);
	m_ListCtrl.InsertColumn(6,"记录性质",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(7,"存储位置",LVCFMT_LEFT,90);
	m_ListCtrl.InsertColumn(8,"备注",LVCFMT_LEFT,60);
	m_ListCtrl.InsertColumn(9,"文件是否存在",LVCFMT_LEFT,90);

	UpdateData();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CTableDlg::UpdateData()
{
	m_rs = m_encaAdo.GetRecordSet("SELECT * FROM TABLEZD order by ZXT "); 
	int a=-1;
	while(!m_rs->adoEOF)
	{
		a++ ;
		m_rs->MoveNext();
	}

	if(a < 0)
	{
		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,"");
		}
		m_ListCtrl.InsertItem(iCount,"");
		var = m_rs->GetCollect("ZXT");//子系统
		if(var.vt != VT_NULL)
		{
				m_ListCtrl.SetItemText(iCount,0,(LPCSTR)_bstr_t(var));
		}

		var = m_rs->GetCollect("ZXTMC");//子系统名称
		if(var.vt != VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,1,(LPCSTR)_bstr_t(var));
		}

		var = m_rs->GetCollect("BH");//二维表代码
		if(var.vt != VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,2,(LPCSTR)_bstr_t(var));
		}
		
		var = m_rs->GetCollect("MC");//二维表名称
		if(var.vt != VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,3,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("LB");//表类别
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,4,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("XZ");//记录性质
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,5,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("ADDR");//存储位置
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,6,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("BZ");//备注
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,7,(LPCSTR)_bstr_t(var));
		}
		var = m_rs->GetCollect("EXIST");//文件是否存在
		if(var.vt!= VT_NULL)
		{
			m_ListCtrl.SetItemText(iCount,8,(LPCSTR)_bstr_t(var));
		}
		m_rs->MoveNext();
		iCount++;
	}	
}

void CTableDlg::OnInsertRow() 
{
	// TODO: Add your control notification handler code here
	CInsertTableDlg dlg;
	dlg.DoModal();
	UpdateData();
}

void CTableDlg::OnDeleteRow() 
{
	// TODO: Add your control notification handler code here
	if(m_ListCtrl.GetSelectionMark() == -1)
	{
		MessageBox("没选择任何行");
		return ;
	}
/*	if(CompareStr("123","123") == 0 &&
		CompareStr("123","124") < 0 )
	{
		MessageBox("function CompareStr is correct!");
	}
	else
	{
		MessageBox("function CompareStr is not correct!");
	}
	return ;
*/	
	if(MessageBox("\t是否删除?","确认删除",MB_YESNO) != IDYES)
	{
		return;
	}
	
	CString zxt = m_ListCtrl.GetItemText(m_ListCtrl.GetSelectionMark(),0);
	CString bh = m_ListCtrl.GetItemText(m_ListCtrl.GetSelectionMark(),2);
	CString addr = m_ListCtrl.GetItemText(m_ListCtrl.GetSelectionMark(),6);
	CString strSQL;
	strSQL.Format("select * from TABLEZD where ZXT = '%s' AND BH = '%s' AND ADDR = '%s'",
		zxt,bh,addr);
	m_rs = m_encaAdo.GetRecordSet(LPCSTR(strSQL)); 
	_variant_t var = m_rs->GetCollect("EXIST");
	CString strYes = "是";
	CString strDB = "";
	if(var.vt != VT_NULL)
	{
		strDB = LPCSTR(_bstr_t(var));
	}
	//if(!CompareStr(strYes,strDB))
	if(!strYes.Compare(strDB))
	{
		MessageBox("该二维表已经存在,不能删除.");
	}
	else
	{
		CString strsql2 = "";
		strsql2.Format("delete TABLEZD where ZXT = '%s' AND BH = '%s' AND ADDR = '%s'",
		zxt,bh,addr);
		if(m_encaAdo.ExecuteSQL(LPCSTR(strsql2)))
		{
			MessageBox("删除成功!");
			UpdateData();
		}
		else
		{
			MessageBox("删除失败!");
		}
	}	
}

void CTableDlg::OnSubmitSave() 
{
	// TODO: Add your control notification handler code here
	this->EndDialog(0);
}

void CTableDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	if(m_ListCtrl.GetSelectionMark() == -1)
	{
//		MessageBox("unselected");
	}
	else
	{
//		MessageBox("selected");
		CInsertTableDlg dlg;
		CString str0 = m_ListCtrl.GetItemText(m_ListCtrl.GetSelectionMark(),0);
		CString str2 = m_ListCtrl.GetItemText(m_ListCtrl.GetSelectionMark(),2);
		CString str6 = m_ListCtrl.GetItemText(m_ListCtrl.GetSelectionMark(),6);
//		MessageBox(str);
		if(dlg.readKey(str0,str2,str6))
		{
//			MessageBox("before DoModal");
			dlg.DoModal();
			UpdateData();
		}
	}
	*pResult = 0;
}

void CTableDlg::OnReNew() 
{
	UpdateData();
}

⌨️ 快捷键说明

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