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

📄 chaxun.cpp

📁 运用ADO技术连接ACCESS数据库(改变连接字串就能连接SQL数据库)
💻 CPP
字号:
// CHAXUN.cpp : implementation file
//

#include "stdafx.h"
#include "family_financ_system.h"
#include "CHAXUN.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCHAXUN dialog


CCHAXUN::CCHAXUN(CWnd* pParent /*=NULL*/)
	: CDialog(CCHAXUN::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCHAXUN)
	m_str_man = _T("");
	m_str_leibie = _T("");
	m_begin_day = _T("");
	m_end_day = _T("");
	m_str_edit = _T("");
	//}}AFX_DATA_INIT
}


void CCHAXUN::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCHAXUN)
	DDX_Control(pDX, IDC_LIST2, m_list);
	DDX_Control(pDX, IDC_COMBO5, m_leibie);
	DDX_Control(pDX, IDC_COMBO4, m_man);
	DDX_CBString(pDX, IDC_COMBO4, m_str_man);
	DDX_CBString(pDX, IDC_COMBO5, m_str_leibie);
	DDX_Text(pDX, IDC_EDIT3, m_begin_day);
	DDX_Text(pDX, IDC_EDIT19, m_end_day);
	DDX_Text(pDX, IDC_EDIT1, m_str_edit);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCHAXUN, CDialog)
	//{{AFX_MSG_MAP(CCHAXUN)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCHAXUN message handlers

BOOL CCHAXUN::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_list.InsertColumn(0,"时间",LVCFMT_LEFT,100,-1);
	m_list.InsertColumn(1,"种类",LVCFMT_LEFT,100,-1);
	m_list.InsertColumn(2,"金额(元)",LVCFMT_LEFT,100,-1);
	m_list.InsertColumn(3,"经手人",LVCFMT_LEFT,100,-1);
	m_list.InsertColumn(4,"备注(具体情况)",LVCFMT_LEFT,200,-1);

	////////////////////////////////////////////////////////////////////////////////////
	int i=0;
	int nstep;
	_bstr_t temp;
	
	////////////////////////////////////////////////////////////////////////////////
	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));
	pCmd->CommandText="SELECT * FROM 家庭财务表";    //通过pCmd对象访问数据库
	pRst=pCmd->Execute(NULL,NULL,adCmdText);
	for(;!pRst->EndEOF; pRst->MoveNext()) //  在数据库中寻找	pRecord->MoveFirst()
	{		
		temp=pRst->GetCollect("时间");
		nstep=m_list.InsertItem(i,temp);
		temp=pRst->GetCollect("种类");
		m_list.SetItemText(nstep,1,temp);	
		temp=pRst->GetCollect("金额");
		m_list.SetItemText(nstep,2,temp);
		temp=pRst->GetCollect("经手人");
		m_list.SetItemText(nstep,3,temp);
		temp=pRst->GetCollect("备注(具体情况)");
		m_list.SetItemText(nstep,4,temp);
	}
	///////////////////////////////////////////////////////////////////////
	pCmd->CommandText="SELECT * FROM 收支类别表";    //通过pCmd对象访问数据库
	pRst=pCmd->Execute(NULL,NULL,adCmdText);
	while(!pRst->EndEOF)
	{
		temp=pRst->GetCollect("种类");
		m_leibie.AddString(temp);
		//把数据库中收支种类这列的内容放入控件中
		pRst->MoveNext();    //下移一个
	}
	m_leibie.AddString("全部收入");
	m_leibie.AddString("全部支出");
	m_leibie.AddString("全部");
	m_str_leibie="全部";
	/////////////////////////////////////////////////////////////////////
	pCmd->CommandText="SELECT * FROM 家庭成员表";    //通过pCmd对象访问数据库
	pRst=pCmd->Execute(NULL,NULL,adCmdText);
	while(!pRst->EndEOF)
	{
		temp=pRst->GetCollect("家庭成员姓名");
		m_man.AddString(temp);
		//把数据库中收支种类这列的内容放入控件中
		pRst->MoveNext();    //下移一个
	}
	m_man.AddString("全部");
	m_str_man="全部";

	//////////////////////////////////////////////////////////////////////
	pRst->Close();    //关闭对象
	pConn->Close();
	pCmd.Release();    //释放对象
	pRst.Release();
	pConn.Release();
	CoUninitialize();    //卸载COM组件

	COleDateTime dateNow;
	dateNow = COleDateTime::GetCurrentTime();     // 获取当前日期时间
	CString   str=dateNow.Format(VAR_DATEVALUEONLY); // 获取当前日
	m_end_day=str;		
	m_begin_day="2000-1-1";
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CCHAXUN::OnOK() 
{
	// TODO: Add extra validation here
	int i=0;
	int nstep;
	_bstr_t temp;
	float sum1=0,sum2=0,sum3=0,money=0;
	
	int myear,mmonth,mday,myear1,mmonth1,mday1;
	UpdateData(TRUE);
	if(m_begin_day!="")
	{
		sscanf(m_begin_day,"%d-%d-%d",&myear,&mmonth,&mday); 
		sscanf(m_end_day,"%d-%d-%d",&myear1,&mmonth1,&mday1);
		if((myear)&&(mmonth)&&(mday)&&(myear1)&&(mmonth1)&&(mday1))
		{
			COleDateTime t_time1(myear,mmonth,mday,0,0,0);
			COleDateTime t_time2(myear1,mmonth1,mday1,0,0,0);
			if(t_time1<t_time2)
			{
			////////////////////////////////////////////////////////////////
				////////////////////////////////////////////////////////////////////////////////
				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("%f",t_time2);
				sqlstr=sqlstr+string_temp;
				sqlstr=sqlstr+") and (日期>=";
				string_temp.Format("%f",t_time1);
				sqlstr=sqlstr+string_temp+")";

				if((m_str_leibie!="全部")&&(m_str_leibie!="全部收入")&&(m_str_leibie!="全部支出"))
				{
					sqlstr=sqlstr+" and (种类='"+m_str_leibie+"')";
				}
				else
				{
					if(m_str_leibie=="全部收入")
					{
						sqlstr=sqlstr+" and (收支类别='收入')";
					}
					else
					{
						if(m_str_leibie=="全部支出")
						{
							sqlstr=sqlstr+" and (收支类别='支出')";
						}
					}
				}
				if(m_str_man!="全部")
				{
					sqlstr=sqlstr+" and (经手人='"+m_str_man+"')";
				}

				pCmd->CommandText=_bstr_t(sqlstr);    //通过pCmd对象访问数据库
				pRst=pCmd->Execute(NULL,NULL,adCmdText);
					m_str_edit+="\r\n";
					m_str_edit+="——————————————————\r\n";
					m_str_edit+="时      间:"+m_begin_day+"--"+m_end_day+"\r\n";
					m_str_edit+="项      目:"+m_str_leibie+"\r\n";
					m_str_edit+="经 手 人:"+m_str_man+"\r\n";
				if(!pRst->EndEOF)
				{
					m_list.DeleteAllItems();
					while(!pRst->EndEOF)
					{
						temp=pRst->GetCollect("时间");
						nstep=m_list.InsertItem(i,temp);
						temp=pRst->GetCollect("种类");
						m_list.SetItemText(nstep,1,temp);
						


						temp=pRst->GetCollect("金额");
						m_list.SetItemText(nstep,2,temp);
						sqlstr=(char *)temp;
						sscanf(sqlstr,"%f",&money);
						temp=pRst->GetCollect("收支类别");
						sqlstr=(char *)temp;
						if(sqlstr=="收入")
						{
							sum1=sum1+money;
						}
						else
						{
							sum2=sum2+money;
						}
						sum3=sum3+money;


						temp=pRst->GetCollect("经手人");
						m_list.SetItemText(nstep,3,temp);
						temp=pRst->GetCollect("备注(具体情况)");
						m_list.SetItemText(nstep,4,temp);			
						pRst->MoveNext();
					}
					
					if(m_str_leibie=="全部")
					{
						m_str_edit+="详      情:\r\n";
						sqlstr.Format("%f",sum1);
						m_str_edit+="    收入:"+sqlstr+" 元\r\n";
						sqlstr.Format("%f",sum2);
						m_str_edit+="    支出:"+sqlstr+" 元\r\n\r\n";
					}
					else
					{
						if(m_str_leibie=="全部收入")
						{
							m_str_edit+="详      情:\r\n";
							sqlstr.Format("%f",sum1);
							m_str_edit+="    收入:"+sqlstr+" 元\r\n\r\n";
						}
						else
						{
							if(m_str_leibie=="全部支出")
							{
								m_str_edit+="详      情:\r\n";
								sqlstr.Format("%f",sum2);
								m_str_edit+="    支出:"+sqlstr+" 元\r\n\r\n";
							}
							else
							{ 
								m_str_edit+="详     情:\r\n";
								sqlstr.Format("%f",sum3);
								m_str_edit+="  "+m_str_leibie+":";
								m_str_edit+=sqlstr+" 元\r\n\r\n";
							}

						}
					}
				}
				else
				{
					/////////////////////////////////////////////////////////////////

					m_str_edit+="详      情:没有该段时间记录!!!\r\n\r\n";

				}


				//////////////////////////////////////////////////////////////////////
				pRst->Close();    //关闭对象
				pConn->Close();
				pCmd.Release();    //释放对象
				pRst.Release();
				pConn.Release();
				CoUninitialize();    //卸载COM组件


			////////////////////////////////////////////////////////////////
			}
			else
			{
				AfxMessageBox("时间设定不对 !");
			}
		}
		else
		{
				AfxMessageBox("时间格式为:2000-1-1 !");
		}
	}
	else
	{
		AfxMessageBox("设定查询时间!");
	}

	UpdateData(FALSE);
	//CDialog::OnOK();
}

⌨️ 快捷键说明

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