3.7.5 入库明细界面的实现(2)
第31~53行代码实现了两个复选框都选中时用户所设定的查询条件,构造对应的SQL语句。
第54~61行代码实现了选中其中一个复选框时用户所设定的查询条件,执行对应的SQL语句。
上面的代码实现了根据用户选中复选框的不同情况,所设定的查询条件,构造不同的SQL语句,并执行查询。下面实现获取查询结果数据并插入到列表控件中。相关代码如下:
- 62 //从记录集中取数据
- 63 int row=0;
- 64 while(!m_record->_EOF)
- 65 {
- 66 CString temp;
- 67 temp=(LPCSTR)(_bstr_t)m_record->GetFields()->GetItem("merchandiseid") ->Value;
- 68 m_list.InsertItem(row,temp); //插入merchandiseid
-
- 69 sqlstr.Format("select * from tb_merchangiseinfo where id='%s'",temp);
- 70 GetMercRecord(sqlstr);
- 71 temp=(LPCSTR)(_bstr_t)m_mercRecord->GetFields()->GetItem("mercname")
- ->Value;
- 72 m_list.SetItemText(row,1,temp); //插入mercname
- 73 temp=(LPCSTR)(_bstr_t)m_mercRecord->GetFields()->GetItem("inprice")->Value;
- 74 m_list.SetItemText(row,2,temp); //插入inprice
- 75 temp=(LPCSTR)(_bstr_t)m_record->GetFields()->GetItem("numbers")->Value;
- 76 m_list.SetItemText(row,3,temp); //插入numbers
- 77 temp=(LPCSTR)(_bstr_t)m_record->GetFields()->GetItem("paymoney")->Value;
- 78 m_list.SetItemText(row,4,temp); //插入paymoney
- 79 temp=(LPCSTR)(_bstr_t)m_mercRecord->GetFields()->GetItem("discount")
- ->Value;
- 80 m_list.SetItemText(row,5,temp); //插入discount
- 81 temp=(LPCSTR)(_bstr_t)m_record->GetFields()->GetItem("operid")->Value;
- 82 m_list.SetItemText(row,6,temp); //插入operid
- 83 temp=(LPCSTR)(_bstr_t)m_record->GetFields()->GetItem("storid")->Value;
- 84 m_list.SetItemText(row,7,temp); //插入storid
- 85 m_record->MoveNext(); //记录后移
- 86 row++;
- 87 }
- 88 CString str;
- 89 str.Format("找到了%d条记录",row);
- 90 MessageBox(str);
- 91 }
第64~90行代码主要执行SQL语句后把查询结果显示在列表控件中。
上面的代码中实现了根据字段取对应数据的操作。读者要注意关键函数GetFields()和GetItem()的使用方法。GetItem()中参数是待获取数据对应的字段名称。
该界面还实现了商品的详细信息显示,本系统把该功能封装成GetMerc()函数。给列表控件添加LVN_ITEMCHANGED消息,响应鼠标单击列表的动作,在该消息函数中执行函数GetMerc()。该函数具体实现代码如下:
代码位置:见光盘中本章源代码的CINDETAIL类。
- 1 CString CINDETAIL::GetMerc(CString sqlstr)
- 2 {
- 3 if( m_mercRecord!=NULL)
- 4 {
- 5 m_mercRecord=NULL;
- 6 m_mercRecord.CreateInstance(__uuidof(Recordset)); //记录集初始化
- 7 }
- 8 for (int i=0;i < m_list2ctrl.GetCount();i++) //删除列表控件列标题
- 9 {
- 10 m_list2ctrl.DeleteString(i);
- 11 }
- 12 m_list2ctrl.ResetContent();
- 13 UpdateData(false); //保存数据
- 14 m_mercRecord->Open((_variant_t )sqlstr,theApp.m_connection.GetInterfacePtr(),
- 15 adOpenDynamic,adLockOptimistic,adCmdText); //打开记录集
- 16 CString str[10],returnstr; //字符串初始化
- 17 str[0]="商品编号:";
- 18 str[1]="商品名称:";
- 19 str[2]="型号规格:";
- 20 str[3]="单位: ";
- 21 str[4]="进价:";
- 22 str[5]="供应商:";
- 23 str[6]="折扣:";
- 24 str[7]="入库编号:";
- 25 str[8]="入库类型:";
- 26 str[9]="备注:";
- 27 CString temp;
- 28 int rows=0;
- 29 int a=GetRecordCount(m_mercRecord); //获取记录个数
- 30 for(int j=0;j<a;j++)
- 31 {
- 32 for(int i=0;i<10;i++) //获取记录数据
- 33 {
- 34 temp=(LPCSTR)(_bstr_t)m_mercRecord->Fields->GetItem((long)i)->Value;
- 35 returnstr+=str[i]+temp+"\r\n ";
- 36 }
- 37 m_list2ctrl.InsertString(rows,returnstr); //插入到组合框中
- 38 returnstr="";
- 39 rows++;
- 40 m_mercRecord->MoveNext(); //记录后移
- 41 }
- 42 UpdateData(false); //显示数据
- 43 return returnstr;
- 44 }