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

📄 identitycardquerydlg.cpp

📁 IdentityCardQuery是一个基于ado身份证查询系统,包括多表操作,查询,添加,删除等.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// IdentityCardQueryDlg.cpp : implementation file
//

#include "stdafx.h"
#include "IdentityCardQuery.h"
#include "IdentityCardQueryDlg.h"

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

extern CIdentityCardQueryApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIdentityCardQueryDlg dialog

CIdentityCardQueryDlg::CIdentityCardQueryDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CIdentityCardQueryDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CIdentityCardQueryDlg)
	m_strData = _T("");
	m_strID = _T("");
	m_strName = _T("");
	m_strPace = _T("");
	m_nAge = 1;
	m_bSelectAll = TRUE;
	m_strDelInfo = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CIdentityCardQueryDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CIdentityCardQueryDlg)
	DDX_Control(pDX, IDC_COMBO_DELTYPE, m_comDelType);
	DDX_Control(pDX, IDC_TABLENAME_QUERY, m_comTableQuery);
	DDX_Control(pDX, IDC_TABLENAME_ADD, m_comTableName);
	DDX_Control(pDX, IDC_BT_QUERY, m_BT_Query);
	DDX_Control(pDX, IDC_BT_ADD, m_BT_Add);
	DDX_Control(pDX, IDC_BT_DELETE, m_BT_DELETE);
	DDX_Control(pDX, IDCANCEL, m_BT_OK);
	DDX_Control(pDX, IDC_COMBO_sex, m_ComSexType);
	DDX_Control(pDX, IDC_COMBO_type, m_comType);
	DDX_Control(pDX, IDC_LIST_DATA, m_DataListCtrl);
	DDX_Text(pDX, IDC_EDIT_DATA, m_strData);
	DDX_Text(pDX, IDC_EDIT_ID, m_strID);
	DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
	DDX_Text(pDX, IDC_EDIT_pace, m_strPace);
	DDX_Text(pDX, IDC_EDIT_age, m_nAge);
	DDX_Check(pDX, IDC_CHECK_ALL, m_bSelectAll);
	DDX_Text(pDX, IDC_EDIT_DELINFO, m_strDelInfo);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CIdentityCardQueryDlg, CDialog)
	//{{AFX_MSG_MAP(CIdentityCardQueryDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BT_QUERY, OnBtQuery)
	ON_BN_CLICKED(IDC_BT_DELETE, OnBtDelete)
	ON_BN_CLICKED(IDC_BT_ADD, OnBtAdd)
	ON_CBN_SELCHANGE(IDC_COMBO_type, OnSelchangetype)
	ON_BN_CLICKED(IDC_BT_ADDTABLE, OnBtAddtable)
	ON_BN_CLICKED(IDC_CHECK_ALL, OnCheckAll)
	ON_CBN_SELCHANGE(IDC_COMBO_DELTYPE, OnSelchangeComboDeltype)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_DATA, OnItemchangedListData)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIdentityCardQueryDlg message handlers

BOOL CIdentityCardQueryDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here

	InitDataList();

	//注意 SQL语句用单引号割开   Password='zhangxiqin'
	CString filename = GetExePath() + _T("database.mdb");
//	CString strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database.mdb");//database.mdb
	CString strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;persist Security Info=FALSE;Data Source='") + filename 
		+ _T("';Jet OLEDB:Database Password='zhangxiqin'");

//	strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;persist Security Info=FALSE;Data Source=c:\\database.mdb;Jet OLEDB:Database Password='zhangxiqin'";   
	if(m_pDb.Open(strConnection))
	{
		m_pRs = CADORecordset(&m_pDb);		
		if(m_pRs.Open("list1", CADORecordset::openTable))//list1	
			m_bConnect = true;
	}
	else	
		m_bConnect = false;

	if (!m_bConnect)
		MessageBox(_T("连接数据库失败"),_T("Error"),MB_ICONEXCLAMATION  | MB_ICONWARNING);

	SetPopedom();

	//////////////////////////////////////////////////////////////////////////
	m_BT_OK.SetIcon(IDI_ICON_EXIT);
	m_BT_DELETE.SetIcon(IDI_ICON_DEL);
	m_BT_Add.SetIcon(IDI_ICON_ADD);
	m_BT_Query.SetIcon(IDI_ICON_SEARCH);
	
	InitAllTable();

	m_comTableName.ResetContent();
	m_comTableQuery.ResetContent();
	for (int i=0; i<m_accessTableArray.GetSize(); i++)
	{
		m_comTableName.AddString(m_accessTableArray[i]);
		m_comTableQuery.AddString(m_accessTableArray[i]);
	}
	if (m_accessTableArray.GetSize() > 0)
	{
		m_comTableName.SetCurSel(0);
		if (m_bSelectAll)
			m_comTableQuery.SelectAll(TRUE);
		else
			m_comTableQuery.SetCheck(0,TRUE);
	}
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CIdentityCardQueryDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CIdentityCardQueryDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CIdentityCardQueryDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CIdentityCardQueryDlg::SetPopedom()
{
	//
  if (!theApp.m_bAdministrator)
  {
	GetDlgItem(IDC_EDIT_ID)->EnableWindow(FALSE);
	GetDlgItem(IDC_EDIT_NAME)->EnableWindow(FALSE);
	GetDlgItem(IDC_COMBO_sex)->EnableWindow(FALSE);
	GetDlgItem(IDC_EDIT_age)->EnableWindow(FALSE);
	GetDlgItem(IDC_EDIT_pace)->EnableWindow(FALSE);
	GetDlgItem(IDC_BT_ADD)->EnableWindow(FALSE);
	GetDlgItem(IDC_BT_DELETE)->EnableWindow(FALSE);
	GetDlgItem(IDC_TABLENAME_ADD)->EnableWindow(FALSE);
  }
}
void CIdentityCardQueryDlg::InitDataList()
{

	// TODO:  Add extra initialization here
	DWORD style = m_DataListCtrl.GetExtendedStyle();
	style |= LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_REPORT;
	m_DataListCtrl.SetExtendedStyle(style);
	
	//this->ModifyStyle(0,style);
	
	::SendMessage(m_DataListCtrl.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
	
	m_DataListCtrl.SetBkColor(RGB(240,247,233));
	m_DataListCtrl.SetTextBkColor(RGB(240,247,233));

	m_DataListCtrl.InsertColumn(0,_T("ID"),LVCFMT_LEFT,200);
	m_DataListCtrl.InsertColumn(1,_T("姓名"),LVCFMT_LEFT,100);
	m_DataListCtrl.InsertColumn(2,_T("性别"),LVCFMT_LEFT,100);
	m_DataListCtrl.InsertColumn(3,_T("年龄"),LVCFMT_LEFT,100);
	m_DataListCtrl.InsertColumn(4,_T("籍贯"),LVCFMT_LEFT,300);

	m_comType.AddString(_T("按ID查询"));
	m_comType.AddString(_T("按名称查询"));
	m_comType.AddString(_T("显示所有"));

	m_comType.SetCurSel(0);

	m_ComSexType.AddString(_T("男"));
	m_ComSexType.AddString(_T("女"));
	m_ComSexType.SetCurSel(0);


	m_comDelType.AddString(_T("按ID删除"));
	m_comDelType.AddString(_T("按名称删除"));
	m_comDelType.AddString(_T("按列表状态删除"));
	m_comDelType.AddString(_T("删除所有"));
	m_comDelType.SetCurSel(0);
}

void CIdentityCardQueryDlg::OnBtQuery() 
{
	// TODO: Add your control notification handler code here

	if (!m_bConnect)
		return;

	m_DataListCtrl.DeleteAllItems();//clear
	if (m_comType.GetCurSel() != 2)
	{
		if (!CheckData())
		{
			MessageBox(_T("未输入数据或则数据不正确"),_T("警告"),MB_ICONEXCLAMATION | MB_ICONWARNING);
			return ;
		}
	}

	CString strID = _T("");
	CString strName = _T("");
	CString strSex = _T("");
	CString strAge = _T("");
	CString strPlace = _T("");
	int iCount = 0;
	CString strQry = _T("");
	CString strTableName = _T("");

//	m_comTableQuery.GetLBText(m_comTableQuery.GetCurSel,strTableName);

	CStringArray  checkedTableArray;
	m_comTableQuery.GetCheckedItemName(checkedTableArray);
	if (checkedTableArray.GetSize() <= 0)
	{
		MessageBox(_T("请选择表项"));
		return;
	}

	CString tablename = _T("");// = FormatTable(checkedTableArray);
	if (m_comType.GetCurSel() == 0)//按id查询
	{	
		bool bFinded = false;
		for (int i=0; i<checkedTableArray.GetSize(); i++)
		{
			tablename = checkedTableArray[i];
			if (-1 == m_strData.Find('*'))//精确查询
			{
				//		strQry.Format(_T("select * FROM list1 WHERE(ID = '%s')"),m_strData);
						strQry.Format(_T("select * FROM %s WHERE(ID = '%s')"),tablename,m_strData);	
				//		strQry = _T("SELECT xxx.* from xxx inner JOIN yyy ON xxx.ID=yyy.ID where  xxx.ID='11'");
				//      strQry = _T("SELECT xxx.* from xxx inner JOIN yyy ON xxx.ID=yyy.ID where  yyy.ID='11'");
				
				if(!m_pRs.Open((LPCTSTR)strQry))
				{
					return ; 
				}
				
				if(!m_pRs.IsBOF())
				{				
					m_pRs.MoveFirst();				
				}
				
				if (!m_pRs.IsEof())
				{
					iCount = m_DataListCtrl.GetItemCount();
					
					m_pRs.GetFieldValue("ID", strID);					
					m_pRs.GetFieldValue("姓名", strName);	
					m_pRs.GetFieldValue("性别", strSex);	
					m_pRs.GetFieldValue("年龄", strAge);	
					m_pRs.GetFieldValue("籍贯", strPlace);	
					
					InsertOneRow(iCount++,strID,strName,strSex,strAge,strPlace);

					bFinded = true;
				}	
				m_pRs.Close();

				if (bFinded)
					break;
			}
			else
			{
				CString tmpstr = _T("");
				tmpstr = m_strData;
				tmpstr.Replace('*','%');
				strQry.Format(_T("select * FROM %s WHERE(ID LIKE '%s')"),tablename,tmpstr);
				if(!m_pRs.Open((LPCTSTR)strQry))
				{
					return ; 
				}
				
				if(!m_pRs.IsBOF())
				{				
					m_pRs.MoveFirst();				
				}
				
				while (!m_pRs.IsEof())
				{
					iCount = m_DataListCtrl.GetItemCount();
					
					m_pRs.GetFieldValue("ID", strID);					
					m_pRs.GetFieldValue("姓名", strName);	
					m_pRs.GetFieldValue("性别", strSex);	
					m_pRs.GetFieldValue("年龄", strAge);	
					m_pRs.GetFieldValue("籍贯", strPlace);	
					
					InsertOneRow(iCount++,strID,strName,strSex,strAge,strPlace);
					
					m_pRs.MoveNext();
					bFinded = true;
				}	
				m_pRs.Close();
				if (bFinded)
					break;
			}
		}		
	}

	else if (m_comType.GetCurSel() == 1)//按名字查询
	{
	//	bool bFinded = false;
		for (int i=0; i<checkedTableArray.GetSize(); i++)
		{
			tablename = checkedTableArray[i];
			CString tmpstr = _T("");
			tmpstr = m_strData;
			if (-1 == m_strData.Find('*'))//精确查询
			{
				strQry.Format(_T("select * FROM %s WHERE(姓名 = '%s')"),tablename,tmpstr);				
			}
			else
			{						
				tmpstr.Replace('*','%');
				strQry.Format(_T("select * FROM %s WHERE(姓名 LIKE '%s')"),tablename,tmpstr);			
			}
			if(!m_pRs.Open((LPCTSTR)strQry))
			{
				return ; 
			}
			
			if(!m_pRs.IsBOF())
			{				
				m_pRs.MoveFirst();				
			}
			
			iCount = m_DataListCtrl.GetItemCount();
			while(!m_pRs.IsEof())
			{
				m_pRs.GetFieldValue("ID", strID);					
				m_pRs.GetFieldValue("姓名", strName);	
				m_pRs.GetFieldValue("性别", strSex);	
				m_pRs.GetFieldValue("年龄", strAge);	
				m_pRs.GetFieldValue("籍贯", strPlace);	
				
				InsertOneRow(iCount++,strID,strName,strSex,strAge,strPlace);
				m_pRs.MoveNext();
			}
			m_pRs.Close();

		}		
	}
	else
	{
		for (int i=0; i<checkedTableArray.GetSize(); i++)
		{
			tablename = checkedTableArray[i];
			strQry.Format(_T("select * FROM %s"),tablename);
			
			if(!m_pRs.Open((LPCTSTR)strQry))
			{
				return ; 
			}
			
			if(!m_pRs.IsBOF())
			{				
				m_pRs.MoveFirst();				
			}
			
			iCount = m_DataListCtrl.GetItemCount();
			while(!m_pRs.IsEof())
			{
				m_pRs.GetFieldValue("ID", strID);					
				m_pRs.GetFieldValue("姓名", strName);	
				m_pRs.GetFieldValue("性别", strSex);	
				m_pRs.GetFieldValue("年龄", strAge);	
				m_pRs.GetFieldValue("籍贯", strPlace);	
				
				InsertOneRow(iCount++,strID,strName,strSex,strAge,strPlace);
				m_pRs.MoveNext();
			}
			m_pRs.Close();
		}
		
	}				
}

//////////////////////////////////////////////////////////////////////////
// 检查数据的有效性(这里简单处理)
//返回值: true---有效  false---无效
//
//date:2008-04-18
//////////////////////////////////////////////////////////////////////////
bool  CIdentityCardQueryDlg::CheckData()
{
	UpdateData();

	if (m_comType.GetCurSel() == 0)//按id查询
	{
		CString tmpstr = m_strData;
		return CheckID(tmpstr,false);
	}
	else
	{
		CString tmpstr = m_strData;
		tmpstr.TrimLeft();tmpstr.TrimRight();
		if (tmpstr.IsEmpty())
			return false;
		else
			return true;
	}
}

/*
CString strId ---- 身份证id
bool bAddData ----  是否是对进行添加的id进行检验,此时不能有*包含
*/
bool CIdentityCardQueryDlg::CheckID(CString strID,bool bAddData)
{
	strID.TrimLeft();
	strID.TrimRight();
	if (strID.IsEmpty())
	{
		return false;
	}

	if (strID.GetLength() > 19)
		return false;

	strID.MakeUpper();
	int ipos = strID.Find('X');
	if ( ipos != -1 && ipos != (strID.GetLength()-1))
		return false;
	strID.Remove('0');
	strID.Remove('1');
	strID.Remove('2');
	strID.Remove('3');
	strID.Remove('4');
	strID.Remove('5');
	strID.Remove('6');
	strID.Remove('7');
	strID.Remove('8');
	strID.Remove('9');
	if (!bAddData)
		strID.Remove('*');

⌨️ 快捷键说明

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