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

📄 addnewcomanddepartdlg.cpp

📁 VC++和ACCESS使用ADO连接
💻 CPP
字号:
// AddNewComAndDepartDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ministryperson.h"
#include "AddNewComAndDepartDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// AddNewComAndDepartDlg dialog


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


void AddNewComAndDepartDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(AddNewComAndDepartDlg)
	DDX_Control(pDX, IDC_ACDS_LIST, m_ListShow);
	DDX_Control(pDX, IDC_COMBO_ACAD_SELECTCOM, m_Cmb_ACAD_SelectCom);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(AddNewComAndDepartDlg, CDialog)
	//{{AFX_MSG_MAP(AddNewComAndDepartDlg)
	ON_BN_CLICKED(IDC_BUTTON_ACDS_STATUS1, OnButtonAcdsStatus1)
	ON_BN_CLICKED(IDC_BUTTON_ACDS_STATUS2, OnButtonAcdsStatus2)
	ON_BN_CLICKED(IDC_BUTTON_ACDS_SAVE1, OnButtonAcdsSave1)
	ON_BN_CLICKED(IDC_BUTTON_ACDS_SAVE2, OnButtonAcdsSave2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// AddNewComAndDepartDlg message handlers

BOOL AddNewComAndDepartDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	// 显示已有的单位信息
	
	m_ListShow.SetExtendedStyle(LVS_EX_FLATSB | 
								LVS_EX_GRIDLINES | 
								LVS_EX_FULLROWSELECT | 
								LVS_EX_ONECLICKACTIVATE);

	m_ListShow.InsertColumn(0, "当前现有的单位",   LVCFMT_LEFT, 165);
	m_ListShow.InsertColumn(1, "当前现有的部门",   LVCFMT_LEFT, 168);
	ShowComAndDepartInfo();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

/*********************************************************************
函数说明:	  显示已经存在的【单位】
函数参数:	  
*********************************************************************/
void AddNewComAndDepartDlg::ShowExistentCompany(CComboBox *pCombox)
{
	CADOOperation ADOdbo;
	CString strComp;
	
	ADOdbo.OpenTable("Search_Table");	// 打开【搜索】表
	if (ADOdbo.IsLastRow())
	{
		ADOdbo.CloseTable();
		return;
	}

	// 得到单位名
	pCombox->ResetContent();
	pCombox->AddString("请选择已有的单位");
	ADOdbo.MoveFirst();
	ADOdbo.GetItemContentStr("Search_Company", CADOOperation::ADO_TYPE_STRING, &strComp);
	pCombox->AddString(strComp);
	DWORD dwRecCount = (ADOdbo.GetRecordCount() - 1);
	ADOdbo.CloseTable();
	
	CString SQL;
	SQL.Format("SELECT Search_Company FROM Search_Table WHERE 1=1");
	ADOdbo.OpenRecordset(SQL);

	ADOdbo.MoveFirst();
	for (DWORD i = 2; i <= dwRecCount; i++)
	{	
		CString strCompOne;
		ADOdbo.MoveTo(i - 1);
		ADOdbo.GetItemContentStr("Search_Company", CADOOperation::ADO_TYPE_STRING, &strComp);
		strCompOne = strComp;

		// 拿出MoveTo的内容,依次和其前面的比较
		ADOdbo.MoveFirst();
		for (DWORD j = 2; j <= i; j++)
		{	
			ADOdbo.GetItemContentStr("Search_Company", CADOOperation::ADO_TYPE_STRING, &strComp);						
			if (strCompOne == strComp)
			{
				ADOdbo.MoveFirst();
				break;
			}
			else
			{
				ADOdbo.MoveNext();
			}			
		}
		if (j > i)
		{
			pCombox->AddString(strCompOne);
		}
		ADOdbo.MoveFirst();
	}
	
	ADOdbo.CloseRecorset();
	pCombox->SetCurSel(0);
	return;
}

/*********************************************************************
函数说明:	  按钮
函数参数:	  
*********************************************************************/
void AddNewComAndDepartDlg::OnButtonAcdsStatus1() 
{	
	ShowExistentCompany(&m_Cmb_ACAD_SelectCom);	
	GetDlgItem(IDC_STATIC_ONE)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_STATIC_ONE1)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_STATIC_ONE2)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_COMBO_ACAD_SELECTCOM)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_EDIT_ACAD_NEWDEPART1)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_BUTTON_ACDS_SAVE1)->ShowWindow(SW_SHOW);

	GetDlgItem(IDC_STATIC_TWO)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_TWO1)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_TWO2)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDIT_ACAD_NEWCOM)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDIT_ACAD_NEWDEPART2)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_BUTTON_ACDS_SAVE2)->ShowWindow(SW_HIDE);

	GetDlgItem(IDC_BUTTON_ACDS_STATUS1)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTON_ACDS_STATUS2)->EnableWindow(TRUE);

}

/*********************************************************************
函数说明:	  按钮
函数参数:	  
*********************************************************************/
void AddNewComAndDepartDlg::OnButtonAcdsStatus2() 
{
	GetDlgItem(IDC_EDIT_ACAD_NEWCOM)->SetFocus();
	GetDlgItem(IDC_STATIC_ONE)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_ONE1)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STATIC_ONE2)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_COMBO_ACAD_SELECTCOM)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDIT_ACAD_NEWDEPART1)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_BUTTON_ACDS_SAVE1)->ShowWindow(SW_HIDE);

	GetDlgItem(IDC_STATIC_TWO)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_STATIC_TWO1)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_STATIC_TWO2)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_EDIT_ACAD_NEWCOM)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_EDIT_ACAD_NEWDEPART2)->ShowWindow(SW_SHOW);
	GetDlgItem(IDC_BUTTON_ACDS_SAVE2)->ShowWindow(SW_SHOW);

	GetDlgItem(IDC_BUTTON_ACDS_STATUS1)->EnableWindow(TRUE);
	GetDlgItem(IDC_BUTTON_ACDS_STATUS2)->EnableWindow(FALSE);
}

/*********************************************************************
函数说明:	  按钮
函数参数:	  
*********************************************************************/
BOOL AddNewComAndDepartDlg::ShowComAndDepartInfo()
{
	CADOOperation ADOdbo;
	CString strFields[] = {"Search_Company", "Search_Depart"};	// 显示的字段

	// 初始化时,先显示所有在职员工的信息 (employee_ID > 0)
	ADOdbo.OpenRecordset("SELECT Search_Company, Search_Depart FROM Search_Table \
		order by Search_Company , Search_Depart");

	ADOdbo.ShowADOView(strFields, 2, this);		// 显示数据列表
	ADOdbo.CloseRecorset();

	return TRUE;
}

/*********************************************************************
函数说明:	  清空数据表的显示
函数参数:	  void
*********************************************************************/
BOOL AddNewComAndDepartDlg::DeleteAllRows()
{
	m_ListShow.DeleteAllItems();	// 清空列表控件
	return TRUE;
}
/*********************************************************************
函数说明:	  设置列表控件一行的内容
函数参数:	  
*********************************************************************/
BOOL AddNewComAndDepartDlg::SetRow(int row, CString *strArray, int nCount)
{
	m_ListShow.InsertItem(row, strArray[0]);			// 在列表控件中插入一行
	for (int i = 1; i < nCount; i++)
	{
		m_ListShow.SetItemText(row, i, strArray[i]);	// 设置除第一行外的其他行
	}
	return TRUE;
}

/*********************************************************************
函数说明:	  添加部门
函数参数:	  
*********************************************************************/
void AddNewComAndDepartDlg::OnButtonAcdsSave1() 
{
	CADOOperation ADOdbo;
	CString SQL;
	CString strCompany;
	CString strDepart;
	
	// 判断组合框所选的内容是否正确
	GetDlgItemText(IDC_COMBO_ACAD_SELECTCOM, strCompany);
	if (strCompany == "请选择已有的单位")
	{
		MessageBox("请为新添加的【部门】选择其所属的【单位】!", "提示", MB_OK | MB_ICONEXCLAMATION);
		return;
	}
	else if (strCompany == "")
	{
		MessageBox("\t\t无【单位】信息!\n请选择【添加新的单位和部门】来添加【单位】和【部门】", "提示", MB_OK | MB_ICONEXCLAMATION);
		OnButtonAcdsStatus2();
		return;
	}

	// 判断新增的部门是否重复
	CString strNewDepart;
	GetDlgItemText(IDC_EDIT_ACAD_NEWDEPART1, strNewDepart);
	strNewDepart.TrimLeft();
	if (strNewDepart.IsEmpty())
	{
		MessageBox("【部门】名称不能为空!", "提示", MB_OK | MB_ICONEXCLAMATION);
		return;
	}
	
	SQL.Format("SELECT Search_Depart FROM Search_Table WHERE Search_Company = '%s'", strCompany);
	ADOdbo.OpenRecordset(SQL);	
	ADOdbo.MoveFirst();
	do 
	{
		ADOdbo.GetItemContentStr("Search_Depart", CADOOperation::ADO_TYPE_STRING, &strDepart);
		if (strNewDepart == strDepart)
		{
			CString strMsg;
			strMsg.Format("单位 【%s】 中已经存在部门 【%s】 !", strCompany, strNewDepart);
			MessageBox(strMsg, "提示", MB_OK | MB_ICONERROR);
			ADOdbo.CloseRecorset();
			SetDlgItemText(IDC_EDIT_ACAD_NEWDEPART1, "");
			((CComboBox*)GetDlgItem(IDC_COMBO_ACAD_SELECTCOM))->SetCurSel(0);
			GetDlgItem(IDC_COMBO_ACAD_SELECTCOM)->SetFocus();
			return;
		}
		ADOdbo.MoveNext();
	} 
	while (!ADOdbo.IsLastRow());
	ADOdbo.CloseRecorset();

	// 添加到表里
	BOOL bRet;
	ADOdbo.OpenTable("Search_Table");
	ADOdbo.AddNew();
	bRet = ADOdbo.SetItemContent("Search_Company", CADOOperation::ADO_TYPE_STRING, &strCompany);	
	if (!bRet)
	{
		MessageBox("【部门】信息添加失败!", "提示", MB_OK | MB_ICONEXCLAMATION);
		ADOdbo.CloseTable();
		return;
	}
	bRet = ADOdbo.SetItemContent("Search_Depart", CADOOperation::ADO_TYPE_STRING, &strNewDepart);	
	if (!bRet)
	{
		MessageBox("【部门】信息添加失败!", "提示", MB_OK | MB_ICONEXCLAMATION);
		ADOdbo.CloseTable();
		return;
	}
	if (!ADOdbo.UpdateData())
	{
		MessageBox("新增【部门】添加失败!", "失败", MB_OK | MB_ICONEXCLAMATION);
		ADOdbo.CloseTable();
		return;
	}	
	ADOdbo.CloseTable();
	MessageBox("新增【部门】添加添加成功!", "成功", MB_OK |MB_ICONEXCLAMATION);
	SetDlgItemText(IDC_EDIT_ACAD_NEWDEPART1, "");
	((CComboBox*)GetDlgItem(IDC_COMBO_ACAD_SELECTCOM))->SetCurSel(0);
	GetDlgItem(IDC_COMBO_ACAD_SELECTCOM)->SetFocus();
	ShowComAndDepartInfo();	
}

/*********************************************************************
函数说明:	  添加单位和部门
函数参数:	  
*********************************************************************/
void AddNewComAndDepartDlg::OnButtonAcdsSave2() 
{
	CADOOperation ADOdbo;
	CString SQL;
	CString strNewCompany;
	CString strNewDepart;

	// 判断 单位 是否正确
	GetDlgItemText(IDC_EDIT_ACAD_NEWCOM, strNewCompany);
	strNewCompany.TrimLeft(); 
	if (strNewCompany.IsEmpty())
	{
		MessageBox("【单位】信息不能为空", "提示", MB_OK | MB_ICONEXCLAMATION);
		return;
	}
	
	GetDlgItemText(IDC_EDIT_ACAD_NEWDEPART2, strNewDepart);
	strNewDepart.TrimLeft();
	if (strNewDepart.IsEmpty())
	{
		MessageBox("【部门】信息不能为空", "提示", MB_OK | MB_ICONEXCLAMATION);
		return;
	}

	// 判断信息是否在数据库里重复
	CString strCompany;
	CString strDepart;

	ADOdbo.OpenTable("Search_Table");
	if (ADOdbo.IsLastRow())
	{	
		ADOdbo.CloseTable();	// 空表,先关闭,再直接跳转到下面执行 AddNew
	}
	else
	{
		ADOdbo.CloseTable();
		SQL.Format("SELECT * FROM Search_Table WHERE 1=1");
		ADOdbo.OpenRecordset(SQL);
		ADOdbo.MoveFirst();
		do 
		{
			ADOdbo.GetItemContentStr("Search_Company", CADOOperation::ADO_TYPE_STRING, &strCompany);
			ADOdbo.GetItemContentStr("Search_Depart", CADOOperation::ADO_TYPE_STRING, &strDepart);
			if ((strNewDepart == strDepart) && (strNewCompany == strCompany))
			{
				CString strMsg;
				strMsg.Format("单位 【%s】 中已经存在部门 【%s】 !", strNewCompany, strNewDepart);
				MessageBox(strMsg, "提示", MB_OK | MB_ICONERROR);
				ADOdbo.CloseRecorset();
				return;
			}
			ADOdbo.MoveNext();
		} while (!ADOdbo.IsLastRow());
		ADOdbo.CloseRecorset();		
	}

	// 添加到表里
	BOOL bRet;
	ADOdbo.OpenTable("Search_Table");
	ADOdbo.AddNew();
	bRet = ADOdbo.SetItemContent("Search_Company", CADOOperation::ADO_TYPE_STRING, &strNewCompany);	
	if (!bRet)
	{
		MessageBox("【部门】信息添加失败!", "提示", MB_OK | MB_ICONEXCLAMATION);
		ADOdbo.CloseTable();
		return;
	}
	bRet = ADOdbo.SetItemContent("Search_Depart", CADOOperation::ADO_TYPE_STRING, &strNewDepart);	
	if (!bRet)
	{
		MessageBox("【部门】信息添加失败!", "提示", MB_OK | MB_ICONEXCLAMATION);
		ADOdbo.CloseTable();
		return;
	}
	if (!ADOdbo.UpdateData())
	{
		MessageBox("添加失败!", "失败", MB_OK | MB_ICONEXCLAMATION);
		ADOdbo.CloseTable();
		return;
	}
	ADOdbo.CloseTable();
	MessageBox("新的【单位】和【部门】添加成功!", "成功", MB_OK |MB_ICONEXCLAMATION);
	SetDlgItemText(IDC_EDIT_ACAD_NEWCOM, "");
	SetDlgItemText(IDC_EDIT_ACAD_NEWDEPART2, "");
	GetDlgItem(IDC_EDIT_ACAD_NEWCOM)->SetFocus();
	ShowComAndDepartInfo();	
}

⌨️ 快捷键说明

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