10.7.5 收支信息查找的实现
和其他管理系统一样,查找功能的设计是必不可少的。根据需求,本模块实现了按收支信息时间查找记录操作,通过单选按钮控件建立一组消息函数对年、月、日也实现了模糊查询。给查询界面添加类FIND,添加自定义函数GetSelTime(UINT nID)和保存时间的time变量,当用户选择查询时间后单击【查找】按钮,则会在列表中显示查询结果。【查找】对话框上"查找"按钮对应的消息具体代码如下:
代码位置:见光盘中本章源代码的FIND类。
- 1 void FIND::OnOK()
- 2 {
- 3 int i,j,k;
//保存记录选择索引 - 4 i=m_year.GetCurSel();
//获取组合框选择索引 - 5 m_year.GetLBText(i,year);
//索引对应的选项 - 6 j=m_month.GetCurSel();
- 7 m_month.GetLBText(j,month);
- 8 k=m_day.GetCurSel();
- 9 m_day.GetLBText(k,day);
- 10 if(monthflag)
//不按月查找 - 11 {
- 12 if(yearflag)
//按年查找 - 13 time=year;
//查找的年份 - 14 else
- 15 {
- 16 if(timeflag)
//如果查找年月的话 - 17 time=year+"-"+month;
- 18 else
//查找年月日 - 19 time=year+"-"+month+"-"+day;
- 20 }
- 21 }
- 22 else
//按月查找 - 23 time="-"+month+"-";
- 24 CDialog::OnOK();
- 25 }
第3~9行代码实现了年、月、日组合框当前选项内容获取。
第10~23行代码实现了根据年、月、日对应布尔型变量的值获取查询时间的组成。其中年、月、日对应布尔型变量的值是在自定义一组消息函数GetSelTime(UINT nID)中实现的。
在GetSelTime(UINT nID)函数中实现用户选择的查询依据。该函数具体代码如下:
代码位置:见光盘中本章源代码的FIND类。
- 1 void FIND::GetSelTime(UINT nID)
- 2 {
- 3 switch(nID)
- 4 {
- 5 case IDC_foryear:
//选择"按年份查询" - 6 m_year.EnableWindow(true);
//年组合框可用 - 7 m_month.EnableWindow(false);
//月组合框不可用 - 8 m_day.EnableWindow(false);
//日组合框不可用 - 9 monthflag=true;
//布尔型变量赋值 - 10 yearflag=true;
//布尔型变量赋值 - 11 break;
- 12 case IDC_formonth:
//选择"按年月查询" - 13 m_year.EnableWindow(true);
- 14 m_month.EnableWindow(true);
- 15 m_day.EnableWindow(false);
- 16 monthflag=true;
- 17 yearflag=false;
- 18 timeflag=true;
- 19 break;
- 20 case IDC_forday:
//选择"按年月日查询" - 21 m_year.EnableWindow(true);
- 22 m_month.EnableWindow(true);
- 23 m_day.EnableWindow(true);
- 24 monthflag=true;
- 25 yearflag=false;
- 26 timeflag=false;
- 27 break;
- 28 case IDC_month:
//选择"只按月"单选钮 - 29 m_year.EnableWindow(false);
- 30 m_month.EnableWindow(true);
- 31 m_day.EnableWindow(false);
- 32 monthflag=false;
- 33 break;
- 34 }
- 35 }
第5~11行代码实现了当用户选择"按年份查询"单选钮的相关设置。
第12~19行代码实现了当用户选择"按年月查询"单选钮的相关设置。
第20~27行代码实现了当用户选择"按年月日查询"单选钮的相关设置。
第28~33行代码实现了当用户选择"只按月"单选钮的相关设置。
注意:关于一组消息函数的实现步骤在本书6.9.4节中详细介绍过,在此不再重复说明,请读者自行查看相关内容。
上面是在FIND类中实现了查询条件和查询内容的获取,而实现查询操作是在【查找信息】按钮消息函数中实现的。该按钮消息函数具体实现代码说明如下:
代码位置:见光盘中本章源代码的PAGE1类。
- 1 void PAGE1::OnFind()
- 2 {
- 3 FIND mydlg;
//定义【查找信息】对话框对象 - 4 if(mydlg.DoModal()==IDOK)
//按下【查找信息】按钮 - 5 {
- 6 CString str,time="time";
- 7 str.Format("%s like '%%%s%%'",time,mydlg.time);
//构造查询语句 - 8 mySet->m_strFilter=str;
//给m_strFilter赋值 - 9 mySet->Requery();
//执行查询 - 10 LOADDATA();
//在列表中显示结果 - 11 }
- 12 }
第6~9行代码实现了获取查询条件和查询内容,构造查询语句,执行查询操作。其中使用了记录集类成员变量m_strFilter来实现查询,给这个变量赋值就相当于执行SQL语句中的WHERE子句。
第10行代码实现了把查询结果显示在列表中。关于这个函数具体实现在前面章节中已经介绍了。
【责任编辑:
云霞 TEL:(010)68476606】