3.7.5 入库明细界面的实现(1)
该界面实现通过各种方式查询明细信息,查询条件可以是操作员编号,也可以通过设定时间范围来查询,通过列表控件显示信息,同时,还可以显示该记录的更详细的信息。其中查询功能实现起来稍微有点麻烦,代码较多,读者要耐心看完,理解复杂的SQL构造过程。
代码位置:见光盘中本章源代码的CINDETAIL类。
- 1 void CINDETAIL::OnButton1()
- 2 {
- 3 CString sqlstr;
- 4 if((m_check.GetCheck()==false)&&(m_check2.GetCheck()==false)) //复选框都没选中
- 5 {
- 6 MessageBox("请设置查询条件","系统提示",64);
- 7 return ;
- 8 }
- 9 if(m_check.GetCheck()==true&&(m_check2.GetCheck()==false)) //复选框选中一个
- 10 {
- 11 UpdateData();
- 12 if(m_edit2=="") //没输入查询条件
- 13 {
- 14 MessageBox("请设置查询条件","系统提示",64);
- 15 return ;
- 16 }
- 17 //列表控件数据清空
- 18 m_list.DeleteAllItems();
- 19 CString fileds;
- 20 switch(m_comquery.GetCurSel()) //判断组合框中选项
- 21 {
- 22 case 0:fileds="operid";break;
- 23 case 1:fileds="provid";break;
- 24 case 2:fileds="storid";break;
- 25 case 3:fileds="merchandiseid";break;
- 26 } //构造查询语句
- 27 sqlstr.Format("select * from tb_storage where %s='%s' and storflag='1'",
- fileds,m_edit2);
- 28 GetRecord(sqlstr); //执行查询操作
- 29 }
第1~29行代码主要是完成对话框界面中各控件的初始化设置。并根据组合框中的选项执行对应查询操作。
上面的代码中通过GetCheck()来判断用户是否选中对应选项,组合框选中选项的索引号是通过GetCurSel()获取的。下面根据获取复选框选中的选项构造查询语句。相关代码如下:
- 30 //复选框都选中
- 31 if(m_check.GetCheck()==true&&(m_check2.GetCheck()==true))
- 32 {
- 33 UpdateData();
- 34 if(m_edit2=="")
- 35 {
- 36 MessageBox("请设置查询条件","系统提示",64);
- 37 return ;
- 38 }
- 39 CString sqlstr;
- 40 m_list.DeleteAllItems();
- 41 CString fileds;
- 42 switch(m_comquery.GetCurSel()) //判断组合框中选项
- 43 {
- 44 case 0:fileds="operid";break;
- 45 case 1:fileds="provid";break;
- 46 case 2:fileds="storid";break;
- 47 case 3:fileds="merchandiseid";break;
- 48 }
- 49 sqlstr.Format("select * from tb_storage where %s='%s' and storflag='1' and
- 50 stordate between '%s' and '%s'",fileds,m_edit2,
- 51 m_begintime.Format("%Y-%m-%d"),m_endtime.Format("%Y-%m-%d"));
- 52 GetRecord(sqlstr); //执行查询
- 53 }
- 54 if(m_check.GetCheck()==false&&(m_check2.GetCheck()==true)) //复选框选中另一个
- 55 {
- 56 UpdateData();
- 57 CString sqlstr;
- 58 sqlstr.Format("select * from tb_storage where stordate between '%s' and '%s'",
- 59 m_begintime.Format("%Y-%m-%d"),m_endtime.Format("%Y-%m-%d"));
- 60 GetRecord(sqlstr);
- 61 }