3.7.6 入库汇总界面的实现
入库汇总界面实现各种方式进行汇总,其中汇总选择组合框中提供5种方式,这是设计的重点。该模块对应实现代码如下:
代码位置:见光盘中本章源代码的CINDETAIL类。
- 1 CString sqlstr;
- 2 CString str,fileds;
- 3 UpdateData(); //保存数据
- 4 m_combox.GetLBText(m_combox.GetCurSel(),str); //获取组合框选项内容
- 5 if(str=="商品编号汇总")
- 6 { //构造查询语句
- 7 sqlstr.Format("select a.merchandiseid,b.mercname,a.unitprice,a.numbers,b. discount,
- 8 a.paymoney,a.operid,a.storid,a.storflag from tb_storage a inner join tb_ merchangiseinfo b
- 9 on a.merchandiseid=b.id where a.merchandiseid='%s' and a.storflag= '1'", m_edit1);
- 10 sqlstr1.Format("select sum(numbers) as allnum from tb_storage a inner join tb_merchangiseinfo
- 11 b on a.merchandiseid=b.id where a.merchandiseid='%s' and a.storflag= '1'", m_edit1);
- 12 sqlstr2.Format("select sum(paymoney) as allmoney from tb_storage a inner join tb_merchangiseinfo
- 13 b on a.merchandiseid=b.id where a.merchandiseid='%s' and a.storflag='1'", m_edit1);
- 14 }
- 15 ShowList2(sqlstr); //显示查询结果
第5行代码只是以商品编号汇总为例说明SQL语句构造过程,其他类似。
第15行代码主要是调用函数ShowList2()显示操作结果和汇总结果。
操作结果和汇总结果是用函数ShowList2()封装实现的,其中代码如下:
代码位置:见光盘中本章源代码的CINDETAIL类。
- 1 void CINSTOCKMANGE::ShowList2(CString sqlstr)
- 2 {
- 3 m_record->Close(); //关闭记录集
- 4 m_record->Open(_bstr_t(sqlstr),theApp.m_connection.GetInterfacePtr(),
- 5 adOpenDynamic,adLockOptimistic,adCmdText); //打开记录集
- 6 int rows=0;
- 7 m_list2.DeleteAllItems(); //清空列表控件
- 8 if(GetRecordCount(m_record))
- 9 {
- 10 while(!m_record->_EOF) //记录没到最后
- 11 {
- 12 for(int i=0;i<8;i++)
- 13 { //取每一列数据
- 14 CString temp=(LPCSTR)(_bstr_t)m_record->Fields->GetItem(long(i))-> Value;
- 15 if(i==0) //第一列
- 16 {
- 17 m_list2.InsertItem(rows,temp);
- 18 }
- 19 else //其他列
- 20 m_list2.SetItemText(rows,i,temp);
- 21 }
- 22 rows++;
- 23 m_record->MoveNext(); //记录后移
- 24 }
- 25 GetAllNum(sqlstr1);
- 26 GetAllMoney(sqlstr2); //结账显示金额
- 27 }
- 28 else
- 29 {
- 30 m_allnum="累计\r\n数量:";
- 31 m_allmoney="累计\r\n金额:";
- 32 m_allmoneyctrl.SetText(m_allmoney);
- 33 m_allnumctrl.SetText(m_allnum);
- 34 }
第8~24行代码显示汇总操作结果。
第25、26行代码显示汇总数量和金额。
在本系统中封装成函数GetAllNum()和GetAllMoney()来实现统计。另外,关于时间范围的查询,在前面有类似的SQL语句构造方法,此处就不做说明了。