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

📄 family_financ_systemdlg.cpp

📁 运用ADO技术连接ACCESS数据库(改变连接字串就能连接SQL数据库)
💻 CPP
📖 第 1 页 / 共 3 页
字号:

}



void CFamily_financ_systemDlg::OnFMenber() 
{
	// TODO: Add your control notification handler code here
	// 编辑家庭成员
	CFAMILY f_dlg;
	f_dlg.Title1=Title1;
	f_dlg.DoModal();
	if(f_dlg.is_ok=="OK")
	{
		is_ok="OK";
	}
	
}

void CFamily_financ_systemDlg::OnTongji() 
{
	// TODO: Add your control notification handler code here
	// 统计查询
	CCHAXUN tongji_dlg;
	tongji_dlg.Title1=Title1;

	tongji_dlg.DoModal();
	
}

void CFamily_financ_systemDlg::OnPlain() 
{
	// TODO: Add your control notification handler code here
	// 每月计划
	CPLAIN plain_dlg;
	plain_dlg.Title1=Title1;
	plain_dlg.nYear=this_year;
	plain_dlg.nMonth=this_month;
	plain_dlg.DoModal();

	CoInitialize(NULL);    //初始化COM组件
	_ConnectionPtr pConn(__uuidof(Connection));    //实例化一个connection对象pConn
	_RecordsetPtr pRst(__uuidof(Recordset));    //实例化一个Recordset对象pRst
	_CommandPtr pCmd(__uuidof(Command));    //实例化一个Command对象pCmd
	pConn->ConnectionString=(_bstr_t)Title1;
	//通过pConn对象连接字符串,连接到ACCESS数据库
	HRESULT hr = pConn->Open("","","",adConnectUnspecified);
	// 以同步的方式进行连接  open("连接字串","用户名","密码","连接方式") 
	// 连接方式有"adConnectUnspecified"(同步) 和 "adAsyncConnect" (异步)
	pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
	
		CString	sqlstr="SELECT * FROM 月统计表 where (年=";
		CString	string_temp;
				string_temp.Format("%d",this_year);
				sqlstr=sqlstr+string_temp;
				sqlstr=sqlstr+") and (月=";
				string_temp.Format("%d",this_month);
				sqlstr=sqlstr+string_temp;
				sqlstr=sqlstr+")";
	pCmd->CommandText=_bstr_t(sqlstr);    //通过pCmd对象访问数据库
	pRst=pCmd->Execute(NULL,NULL,adCmdText);

		_bstr_t	temp=pRst->GetCollect("月支出");
		char *char_temp=temp;
		sscanf(char_temp,"%f",&m_this_money_out);
		temp=pRst->GetCollect("总计划支出");
		char_temp=temp;
		sscanf(char_temp,"%f",&m_this_total_plain);
		temp=pRst->GetCollect("生活计划支出");
		char_temp=temp;
		sscanf(char_temp,"%f",&m_this_l_plain);
		temp=pRst->GetCollect("休闲计划支出");
		char_temp=temp;
		sscanf(char_temp,"%f",&m_this_p_plain);
	//////////////////////////////////////////////////////////////////////
	pRst->Close();    //关闭对象
	pConn->Close();
	pCmd.Release();    //释放对象
	pRst.Release();
	pConn.Release();
	CoUninitialize();    //卸载COM组件
	/////////////////////////////////////////////////////////////////////
	
	UpdateData(FALSE);
	
}

void CFamily_financ_systemDlg::OnDelert() 
{
	// TODO: Add your control notification handler code here
	// 删除记录
	m_delert.EnableWindow(FALSE);
	int   nYear,nMonth,nDay;
	float total_in,total_out,l_t_out,p_t_out,money;
	
	
	CString f_day,f_typ,f_money,f_man,leibie;
	int i=0,j;
	j=m_list.GetItemCount();
	while((m_list.GetItemState(i, LVIS_SELECTED) != LVIS_SELECTED)&&(i<j))
	{
		i++;
	}
	if(i<j)
	{
		if(MessageBox("是否真的删除选中数据???","信息提示",MB_OKCANCEL)==IDOK)
		{
			f_day=m_list.GetItemText(i, 0);
			f_typ=m_list.GetItemText(i, 1);
			f_money=m_list.GetItemText(i, 2);
			f_man=m_list.GetItemText(i, 3);
			sscanf(f_money,"%f",&money);
			sscanf(f_day,"%d-%d-%d",&nYear,&nMonth,&nDay);	
			if((f_typ=="工资(奖金)")|(f_typ=="其他收入"))
			{
				leibie="收入";
			}
			else
			{
				leibie="支出";
			}

			///////////////////////////////////////////////////////////////////////////////
			CoInitialize(NULL);    //初始化COM组件
			_ConnectionPtr m_pConnection; 
			_RecordsetPtr m_pRecordset; 		
			m_pConnection.CreateInstance(__uuidof(Connection)); 
			m_pRecordset.CreateInstance(__uuidof(Recordset));  
			m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
			CString sqlstr="SELECT * FROM 家庭财务表 where (时间='";
			sqlstr=sqlstr+f_day;sqlstr=sqlstr+"') and (种类='";
			sqlstr=sqlstr+f_typ;sqlstr=sqlstr+"') and (金额=";
			sqlstr=sqlstr+f_money;sqlstr=sqlstr+") and (经手人='";
			sqlstr=sqlstr+f_man+"')";
			m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
							(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
							adOpenDynamic, 
							adLockOptimistic, 
							adCmdText); 
			if(!m_pRecordset->EndEOF)
			{
				m_pRecordset->Delete(adAffectCurrent);
				m_pRecordset->Update();///保存到库中
			}

			m_pRecordset->Close();     
			m_pConnection->Close();
///////////////////////////////////////////////////////////////////////////////////
			m_pConnection.CreateInstance(__uuidof(Connection)); 
			m_pRecordset.CreateInstance(__uuidof(Recordset));  
			m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 

			sqlstr="SELECT * FROM 月统计表 where (年=";
			CString	string_temp;
			string_temp.Format("%d",nYear);
			sqlstr=sqlstr+string_temp;
			sqlstr=sqlstr+") and (月=";
			string_temp.Format("%d",nMonth);
			sqlstr=sqlstr+string_temp;
			sqlstr=sqlstr+")";
			m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
						(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
						adOpenDynamic, 
						adLockOptimistic, 
						adCmdText); 

			char *char_temp;
			_bstr_t	temp=m_pRecordset->GetCollect("月支出");
			char_temp=temp;
			sscanf(char_temp,"%f",&total_out);
			temp=m_pRecordset->GetCollect("月收入");
			char_temp=temp;
			sscanf(char_temp,"%f",&total_in);
			temp=m_pRecordset->GetCollect("实际生活支出");
			char_temp=temp;
			sscanf(char_temp,"%f",&l_t_out);
			temp=m_pRecordset->GetCollect("实际休闲支出");
			char_temp=temp;
			sscanf(char_temp,"%f",&p_t_out);

			if(leibie=="收入")
			{
				total_in=total_in-money;
				m_money_sum_in=m_money_sum_in-money;
			}
			else
			{
				total_out=total_out-money;
				m_money_sum_out=m_money_sum_out-money;
				if((m_io_t=="饮食消费")|(m_io_t=="生活用品消费"))
				{
					l_t_out=l_t_out-money;
				}
				else	
				{
					if(m_io_t=="文娱消费")
					{
						p_t_out=p_t_out-money;
					}
				}
			}
			m_pRecordset->PutCollect("总收入",m_money_sum_in); 
			m_pRecordset->PutCollect("总支出",m_money_sum_out); 
			m_pRecordset->PutCollect("实际生活支出",l_t_out); 
			m_pRecordset->PutCollect("实际休闲支出",p_t_out); 
			m_pRecordset->PutCollect("月收入",total_in); 
			m_pRecordset->PutCollect("月支出",total_out); 
			m_pRecordset->Update();

			m_money_sum_end=m_money_sum_in-m_money_sum_out;
			////////////////////////////////////////////////////////////////////////////////////
			m_pRecordset->Close();     
			m_pConnection->Close();
			CoUninitialize();    //卸载COM组件
			m_list.DeleteItem(i);
		}	
	}
	else
	{
		AfxMessageBox("请选择要删除的记录!");
	}
	UpdateData(FALSE);
	m_delert.EnableWindow(TRUE);
}

void CFamily_financ_systemDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default

	CoInitialize(NULL);    //初始化COM组件
	_ConnectionPtr m_pConnection; 
	_RecordsetPtr m_pRecordset; 		
	m_pConnection.CreateInstance(__uuidof(Connection)); 
	m_pRecordset.CreateInstance(__uuidof(Recordset));  
	m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
	CString sqlstr="SELECT * FROM 帮助表";
	m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
					(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
					adOpenDynamic, 
					adLockOptimistic, 
					adCmdText); 
	if(!m_pRecordset->EndEOF)
	{			
		m_pRecordset->PutCollect("目前总收入",m_money_sum_in);; 
		m_pRecordset->PutCollect("目前总消费",m_money_sum_out); 
		m_pRecordset->PutCollect("目前总结余",m_money_sum_end);  
		m_pRecordset->Update();
	}
	else
	{
		m_pRecordset->AddNew();
		m_pRecordset->PutCollect("目前总收入",m_money_sum_in);; 
		m_pRecordset->PutCollect("目前总消费",m_money_sum_out); 
		m_pRecordset->PutCollect("目前总结余",m_money_sum_end);  
		m_pRecordset->Update();
	}
	m_pRecordset->Close();     
	m_pConnection->Close();
	CoUninitialize();    //卸载COM组件

	CDialog::OnClose();
}

void CFamily_financ_systemDlg::OnDelert2() 
{
	// TODO: Add your control notification handler code here
	this->EnableWindow(FALSE);
	if(MessageBox("是否真的删除所有数据???","信息提示",MB_OKCANCEL)==IDOK)
  	{
		////////////////////////////////////////////////////////////////////////////
		//
		//		删除家庭财务表
		//
		///////////////////////////////////////////////////////////////////////////
		CoInitialize(NULL);    //初始化COM组件
		_ConnectionPtr m_pConnection; 
		_RecordsetPtr m_pRecordset; 		
		m_pConnection.CreateInstance(__uuidof(Connection)); 
		m_pRecordset.CreateInstance(__uuidof(Recordset));  
		m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
		CString sqlstr="SELECT * FROM 家庭财务表";
		m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
						(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
						adOpenDynamic, 
						adLockOptimistic, 
						adCmdText); 
		while(!m_pRecordset->EndEOF)
		{
			m_pRecordset->Delete(adAffectCurrent);
			m_pRecordset->Update();///保存到库中
			m_pRecordset->MoveNext();
		}

		m_pRecordset->Close();     
		m_pConnection->Close();
		/////////////////////////////////////////////////////////////////////////
		////////////////////////////////////////////////////////////////////////////
		//
		//		删除月统计表
		//
		///////////////////////////////////////////////////////////////////////////
		m_pConnection.CreateInstance(__uuidof(Connection)); 
		m_pRecordset.CreateInstance(__uuidof(Recordset));  
		m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
		sqlstr="SELECT * FROM 月统计表";
		m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
						(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
						adOpenDynamic, 
						adLockOptimistic, 
						adCmdText); 
		while(!m_pRecordset->EndEOF)
		{
			m_pRecordset->Delete(adAffectCurrent);
			m_pRecordset->Update();///保存到库中
			m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();     
		m_pConnection->Close();
		////////////////////////////////////////////////////////////////////////////
		//
		//		删除帮助表
		//
		///////////////////////////////////////////////////////////////////////////
		m_pConnection.CreateInstance(__uuidof(Connection)); 
		m_pRecordset.CreateInstance(__uuidof(Recordset));  
		m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
		sqlstr="SELECT * FROM 帮助表";
		m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
						(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
						adOpenDynamic, 
						adLockOptimistic, 
						adCmdText); 
		while(!m_pRecordset->EndEOF)
		{
			m_pRecordset->Delete(adAffectCurrent);
			m_pRecordset->Update();///保存到库中
			m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();     
		m_pConnection->Close();
		////////////////////////////////////////////////////////////////////////////
		//
		//		删除家庭成员表
		//
		///////////////////////////////////////////////////////////////////////////
		m_pConnection.CreateInstance(__uuidof(Connection)); 
		m_pRecordset.CreateInstance(__uuidof(Recordset));  
		m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
		sqlstr="SELECT * FROM 家庭成员表";
		m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
						(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
						adOpenDynamic, 
						adLockOptimistic, 
						adCmdText); 
		if(!m_pRecordset->EndEOF)
		{
			if(MessageBox("是否真的删除家庭成员???如果删除需要重新录入家庭成员","信息提示",MB_OKCANCEL)==IDOK)
  			{
				while(!m_pRecordset->EndEOF)
				{
					m_pRecordset->Delete(adAffectCurrent);
					m_pRecordset->Update();///保存到库中
					m_pRecordset->MoveNext();
				}
				CDialog::OnOK();
			}
		}
		m_pRecordset->Close();     
		m_pConnection->Close();
		CoUninitialize();    //卸载COM组件
		m_list.DeleteAllItems();
		m_this_total_plain=0;
		m_this_total_out=0;
		m_this_l_plain=0;
		m_this_l_true_out=0;
		m_this_p_plain=0;
		m_this_p_true_out=0;
		m_last_total_plain=0;
		m_last_true_total_out=0;
		m_last_l_plain=0;
		m_last_l_true_out=0;
		m_last_p_plain=0;
		m_last_p_out=0;
		m_money_sum_in=0;
		m_money_sum_out=0;
		m_money_sum_end=0;
		UpdateData(FALSE);
   	}
	this->EnableWindow(TRUE);
}

⌨️ 快捷键说明

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