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

📄 funcoutposinfodlg.cpp

📁 VC++和ACCESS使用ADO连接
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	*pResult = 0;
}

/*********************************************************************
函数说明:	  
函数参数:	  
*********************************************************************/
void FuncOutPosInfoDlg::OnCheckOutpiCondition() 
{
	if (!m_CBtn_OutCheck.GetCheck())
	{
		IDStateControl(FALSE);		
	}
	else
	{
		IDStateControl(TRUE);		
	}			
}

/*********************************************************************
函数说明:	  
函数参数:	  
*********************************************************************/
void FuncOutPosInfoDlg::IDStateControl(BOOL bState)
{
	GetDlgItem(IDC_STATIC_OUTPI_TITLE)->EnableWindow(bState);
	GetDlgItem(IDC_STATIC_OUTPI_COMPANY)->EnableWindow(bState);
	GetDlgItem(IDC_STATIC_OUTPI_DEPART)->EnableWindow(bState);
	GetDlgItem(IDC_COMBO_OUTPI_COMPANY)->EnableWindow(bState);
	GetDlgItem(IDC_COMBO_OUTPI_DEPART)->EnableWindow(bState);
}

/*********************************************************************
函数说明:	  
函数参数:	  
*********************************************************************/
void FuncOutPosInfoDlg::InitCompanyCmB(CComboBox *pComp)
{
	CADOOperation ADOdbo;
	CString strComp;
	
	ADOdbo.OpenTable("Search_Table");	// 打开“搜索”表
	if (ADOdbo.IsLastRow())
	{
		ADOdbo.CloseTable();
		return;
	}

	// 得到单位名
	pComp->ResetContent();
	pComp->AddString("请选择已有的单位");
	ADOdbo.MoveFirst();
	ADOdbo.GetItemContentStr("Search_Company", CADOOperation::ADO_TYPE_STRING, &strComp);
	pComp->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)
		{
			pComp->AddString(strCompOne);
		}
		ADOdbo.MoveFirst();
	}
	
	ADOdbo.CloseRecorset();
	pComp->SetCurSel(0);
	return;
}

/*********************************************************************
函数说明:	  
函数参数:	  
*********************************************************************/
BOOL FuncOutPosInfoDlg::InitDepartCmB(CComboBox *pDept)
{
	CADOOperation ADODepart;
	CString strDepart;
	CString strComp;
	CString strIndex;
	CString SQL;
	
	int nIndex = ((CComboBox*)GetDlgItem(IDC_COMBO_OUTPI_COMPANY))->GetCurSel();				// 选中的“单位”的项数
	int nBuff  = ((CComboBox*)GetDlgItem(IDC_COMBO_OUTPI_COMPANY))->GetLBTextLen(nIndex);		// 该项内容大小
	((CComboBox*)GetDlgItem(IDC_COMBO_OUTPI_COMPANY))->GetLBText(nIndex, strComp.GetBuffer(nBuff));	// 获取该项内容
	strComp.ReleaseBuffer();
	strIndex = strComp.GetBuffer(0);

	SQL.Format("SELECT Search_Depart FROM Search_Table WHERE Search_Company = '%s'", strIndex);
	ADODepart.OpenRecordset(SQL);	
	if (ADODepart.IsLastRow())
	{
		ADODepart.CloseRecorset();
		return TRUE;
	}

	pDept->AddString("请选择部门");
	ADODepart.MoveFirst();
	do 
	{
		ADODepart.GetItemContentStr("Search_Depart", CADOOperation::ADO_TYPE_STRING, &strDepart);
		pDept->AddString(strDepart);
		ADODepart.MoveNext();
	} while (!ADODepart.IsLastRow());

	ADODepart.CloseRecorset();
	pDept->SetCurSel(0);

	return TRUE;
}

/*********************************************************************
函数说明:	  
函数参数:	  
*********************************************************************/
void FuncOutPosInfoDlg::OnSelchangeComboOutpiCompany() 
{
	((CComboBox*)GetDlgItem(IDC_COMBO_OUTPI_DEPART))->ResetContent();	// 清空“部门”组合框的内容
	InitDepartCmB(&m_Cmb_OutPI_Depart);	
}

/*********************************************************************
函数说明:	  [按钮] 修改路径
函数参数:	  
*********************************************************************/
void FuncOutPosInfoDlg::OnBtnOutpiPath() 
{
	CFuncOper FunOper;
	CString strNewPath;
	strNewPath = FunOper.SettingSavePath(this, "请选择保存路径");
	if (strNewPath.IsEmpty())
	{
		strNewPath = m_strFarmExcelPath;
	}
	m_strFarmExcelPath = strNewPath;
	CString strPathMsg;
	strPathMsg.Format("(当前保存路径为:%s)", strNewPath);
	SetDlgItemText(IDC_STATIC_OUTPI_PATH, strPathMsg);

	CADOOperation ADOdbo;
	CString SQL;
	SQL.Format("update AccessInfo_Table set Infos_Path = '%s' where Index_Path = '农民工路径'", strNewPath);
	ADOdbo.OpenRecordset(SQL);
	ADOdbo.CloseRecorset();
}

/*********************************************************************
函数说明:	  初始化保存路径的显示
函数参数:	  
*********************************************************************/
void FuncOutPosInfoDlg::InitFarmExcelPath()
{
	CADOOperation ADOdbo;
	CString SQL;
	SQL.Format("select Infos_Path from AccessInfo_Table where Index_Path = '农民工路径'");
	ADOdbo.OpenRecordset(SQL);

	CString strField[] = {"Infos_Path"};
	CString strRetPath[1];
	ADOdbo.GetFieldsValue(strField, 1, strRetPath, FALSE);
	ADOdbo.CloseRecorset();

	m_strFarmExcelPath = strRetPath[0];
	CString strPathMsg;
	strPathMsg.Format("(当前保存路径为:%s)", strRetPath[0]);
	SetDlgItemText(IDC_STATIC_OUTPI_PATH, strPathMsg);
}

/*********************************************************************
函数说明:	  
函数参数:	  
*********************************************************************/
void FuncOutPosInfoDlg::OnBtnOutpiExcel() 
{
	GetDlgItem(IDC_COMBO_OUTPI_QUERYTYPE)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTON_OUTPI_QUERY)->EnableWindow(FALSE);
	GetDlgItem(IDC_BTN_OUTPI_PATH)->EnableWindow(FALSE);
	GetDlgItem(IDC_BTN_OUTPI_EXCEL)->EnableWindow(FALSE);	

	//变量定义
	_Application_Excel m_Application;    
	Workbooks_Excel    m_Workbooks;
	_Workbook_Excel    m_Workbook;
	Worksheets_Excel   m_Worksheets;
	_Worksheet_Excel   m_Worksheet;
	Range_Excel        m_range;

	LPDISPATCH  lpDisp;    
	COleVariant vResult;
	COleVariant covTrue((short)TRUE);
    COleVariant covFalse((short)FALSE);
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

	// 因为在 InitInstance 中已经初始化过 COM 的动态连接库
	// 	if(!AfxOleInit())  
	// 	{
	//         AfxMessageBox("无法初始化COM的动态连接库!");
	//         return;
	// 	}

	//创建Excel 2000服务器(启动Excel)
	if(!m_Application.CreateDispatch("Excel.Application")) 
	{
		AfxMessageBox("无法启动Excel服务器!");
		return;
	}
	
	m_Application.SetVisible(FALSE);          // 使Excel不可见
	m_Application.SetUserControl(FALSE);      // 不允许其它用户控制Excel
	
	CFuncOper FunOper;
	CString strFile;
	strFile = FunOper.GetProgramPath() + "\\DocsWord\\农民工花名册(空).xls";
	// COleVariant varFilePath(strFile);

	// Workbooks 打开
	m_Workbooks.AttachDispatch(m_Application.GetWorkbooks(), TRUE);
	lpDisp = m_Workbooks.Open(strFile, covOptional, covOptional, covOptional, covOptional, 
								covOptional, covOptional, covOptional, covOptional, 
								covOptional, covOptional,covOptional, covOptional);
	
	// 得到 Workbook
	m_Workbook.AttachDispatch(lpDisp, TRUE);

	// 得到 Worksheets 
	m_Worksheets.AttachDispatch(m_Workbook.GetWorksheets(), TRUE);
	
	// 得到sheet1 
	m_Worksheet.AttachDispatch(m_Worksheets.GetItem(COleVariant("sheet1")), TRUE); 
	
	// 得到全部 Cells,此时, m_range 是 cells 的集合 
	m_range.AttachDispatch(m_Worksheet.GetCells(), TRUE);

	// 设置单元格的值
	for (int i = 2; i < (m_ListCtrl_OutPI.GetItemCount() + 2); i++)
	{					
		m_range.SetItem(COleVariant((long)i),COleVariant((long)1), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 0)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)2), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 1)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)3), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 2)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)4), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 3)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)5), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 4)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)6), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 5)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)7), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 6)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)8), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 7)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)9), COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 8)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)10),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 9)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)11),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 10)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)12),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 11)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)13),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 12)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)14),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 13)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)15),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 14)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)16),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 15)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)17),COleVariant(m_ListCtrl_OutPI.GetItemText(i - 2, 16)));
	}
	
	SYSTEMTIME SysTime;
	GetSystemTime(&SysTime);
	CString strSavePath;
	strSavePath.Format(m_strFarmExcelPath + "\\农民工花名册(%d-%d-%d-%d-%d-%d)_(%s-%s-%s).xls", 
						SysTime.wYear, SysTime.wMonth, SysTime.wDay, SysTime.wHour, SysTime.wMinute, SysTime.wSecond,
						m_strFarmType, m_strFarmCom, m_strFarmDepart);

	// 保存 
	m_Workbook.SaveAs(COleVariant(strSavePath), covOptional, covOptional, covOptional, 
						covOptional, covOptional, 0, covOptional, covOptional, covOptional, covOptional);
	
	// 关闭所有的book 退出 Excel 
	m_Workbook.Close(covOptional, COleVariant(strSavePath), covOptional);
	m_Workbooks.Close();      
	m_Application.Quit();

	MessageBox("农民工花名册查询报表生成成功!\t", "提示", MB_OK | MB_ICONEXCLAMATION);

	GetDlgItem(IDC_COMBO_OUTPI_QUERYTYPE)->EnableWindow(TRUE);
	GetDlgItem(IDC_BUTTON_OUTPI_QUERY)->EnableWindow(TRUE);
	GetDlgItem(IDC_BTN_OUTPI_PATH)->EnableWindow(TRUE);
	GetDlgItem(IDC_BTN_OUTPI_EXCEL)->EnableWindow(TRUE);	
}

⌨️ 快捷键说明

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