📄 buyoperview.cpp
字号:
m_ctlList1.SetItemText(m_nItem, i, strValues[i]);
}
// 打开进货表,添加记录
m_pRecordset->Open( ("select * from 进货"),
_variant_t((IDispatch*)theApp.m_pConnection,true),
adOpenStatic, adLockOptimistic, adCmdText);
m_pRecordset->AddNew();
for (i = 0; i < m_nFieldCount; i++)
{
vt1.SetString((LPCTSTR)m_strFields[i]);
if (strValues[i].IsEmpty())
vt2.vt = VT_NULL;
else
vt2.SetString((LPCTSTR)strValues[i]);
m_pRecordset->PutCollect(vt1, vt2);
vt1.Clear();
vt2.Clear();
}
// 金额字段
vt1.SetString("金额");
CString strTemp;
double dblTemp = atoi(LPCTSTR(m_strNewQuantity)) * atof(LPCTSTR(m_strInPrice));
strTemp.Format("%.2lf", dblTemp);
vt2.SetString(LPCTSTR(strTemp));
m_pRecordset->PutCollect(vt1, vt2);
// 日期字段
CTime t = CTime::GetCurrentTime();
strTemp.Format("%d-%d-%d", t.GetYear(), t.GetMonth(), t.GetDay());
vt1.SetString("日期");
vt2.SetString(LPCTSTR(strTemp));
m_pRecordset->PutCollect(vt1, vt2);
vt1.Clear();
vt2.Clear();
// 金额字段
vt1.SetString("进货单位");
vt2.SetString(LPCTSTR(m_strWhere));
m_pRecordset->PutCollect(vt1, vt2);
// 更新数据库然后关闭
m_pRecordset->Update();
m_pRecordset->Close();
// 把进货的内容显示到List2中
int nIndex = m_ctlList2.GetItemCount();
m_ctlList2.InsertItem(nIndex, strValues[0]);
for (i = 1; i < m_nFieldCount; i++)
m_ctlList2.SetItemText(nIndex, i, strValues[i]);
Reset(); // 清空所有编辑框
GetTotalMoney(); // 计算进货金额
}
//-----------------------------------------------------------------------------
// 功能: 更改库存表和进货表,添加一条新的记录到库存表
// 备注: 进货表总是每次都添加一条记录
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CBuyOperView::OnAppend()
{
if (CheckUserInput() == FALSE) // 发现错误则不进行操作
return;
CString strValues[m_nFieldCount];
strValues[0] = m_strMedName;
strValues[1] = m_strSpecification;
strValues[2] = m_strType;
strValues[3] = m_strLocation;
strValues[4] = m_strNewQuantity;
strValues[5] = m_strUnit;
strValues[6] = m_strInPrice;
strValues[7] = m_strOutPrice;
strValues[8] = m_strMemo;
// 打开库存表,修改记录
m_pRecordset->Open( _variant_t("select * from 库存"),
_variant_t((IDispatch*)theApp.m_pConnection,true),
adOpenStatic, adLockOptimistic, adCmdText);
m_pRecordset->AddNew();
int nQuantity = 0; // 进货以后的数量
_variant_t vt1,vt2;
for (int i = 0; i < m_nFieldCount; i++)
{
vt1.SetString((LPCTSTR)m_strFields[i]);
if (strValues[i].IsEmpty())
vt2.vt = VT_NULL;
else
vt2.SetString((LPCTSTR)strValues[i]);
m_pRecordset->PutCollect(vt1, vt2);
vt1.Clear();
vt2.Clear();
}
m_pRecordset->Update();
m_pRecordset->Close();
// 打开进货表,添加记录
m_pRecordset->Open( ("select * from 进货"),
_variant_t((IDispatch*)theApp.m_pConnection,true),
adOpenStatic, adLockOptimistic, adCmdText);
m_pRecordset->AddNew();
for (i = 0; i < m_nFieldCount; i++)
{
vt1.SetString((LPCTSTR)m_strFields[i]);
if (strValues[i].IsEmpty())
vt2.vt = VT_NULL;
else
vt2.SetString((LPCTSTR)strValues[i]);
m_pRecordset->PutCollect(vt1, vt2);
vt1.Clear();
vt2.Clear();
}
// 金额字段
vt1.SetString("金额");
CString strTemp;
double dblTemp = atoi(LPCTSTR(m_strNewQuantity)) * atof(LPCTSTR(m_strInPrice));
strTemp.Format("%.2lf", dblTemp);
vt2.SetString(LPCTSTR(strTemp));
m_pRecordset->PutCollect(vt1, vt2);
// 日期字段
CTime t = CTime::GetCurrentTime();
strTemp.Format("%d-%d-%d", t.GetYear(), t.GetMonth(), t.GetDay());
vt1.SetString("日期");
vt2.SetString(LPCTSTR(strTemp));
m_pRecordset->PutCollect(vt1, vt2);
vt1.Clear();
vt2.Clear();
// 金额字段
vt1.SetString("进货单位");
vt2.SetString(LPCTSTR(m_strWhere));
m_pRecordset->PutCollect(vt1, vt2);
// 更新数据库然后关闭
m_pRecordset->Update();
m_pRecordset->Close();
// 把进货的内容显示到List2中
int nIndex = m_ctlList2.GetItemCount();
m_ctlList2.InsertItem(nIndex, strValues[0]);
for (i = 1; i < m_nFieldCount; i++)
m_ctlList2.SetItemText(nIndex, i, strValues[i]);
Reset(); // 清空所有编辑框
GetTotalMoney(); // 计算进货金额
}
//-----------------------------------------------------------------------------
// 功能: 当用户在List1上用鼠标点击时的消息处理函数,获得当前的选择项
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CBuyOperView::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
POSITION pos = m_ctlList1.GetFirstSelectedItemPosition();
if (pos == NULL)
{
m_nItem = -1;
return;
}
m_nItem = m_ctlList1.GetNextSelectedItem(pos); // 当前选择项
// 目的是把当前选择的条目的内容显示到编辑框,以减轻用户输入的负担
// 注意: 数量不显示出来
CString strValues[m_nFieldCount];
for (int i = 0; i < m_nFieldCount; i++)
strValues[i] = m_ctlList1.GetItemText(m_nItem, i);
m_strMedName = strValues[0];
m_strSpecification = strValues[1];
m_strType = strValues[2];
m_strLocation = strValues[3];
m_strUnit = strValues[5];
m_strMemo = strValues[8];
UpdateData(FALSE);
SetDlgItemText(IDC_INPRICE, strValues[6]); // 进价
SetDlgItemText(IDC_OUTPRICE, strValues[7]); // 零售价
*pResult = 0;
}
//-----------------------------------------------------------------------------
// 功能: 对用户的输入进行容错性检查
// 输出: 没有错误返回TRUE,否则返回FALSE
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
BOOL CBuyOperView::CheckUserInput()
{
UpdateData();
// 容错性检查
if (m_strMedName.IsEmpty())
{
MessageBox("请输入品名!", "提示", MB_ICONINFORMATION);
GetDlgItem(IDC_MEDNAME)->SetFocus();
return FALSE;
}
if (m_strSpecification.IsEmpty())
{
MessageBox("请输入规格!", "提示", MB_ICONINFORMATION);
GetDlgItem(IDC_SPECIFICATION)->SetFocus();
return FALSE;
}
if (m_strType.IsEmpty())
{
MessageBox("请输入剂型!", "提示", MB_ICONINFORMATION);
GetDlgItem(IDC_COMBO1)->SetFocus();
return FALSE;
}
if (m_strLocation.IsEmpty())
{
MessageBox("请输入产地!", "提示", MB_ICONINFORMATION);
GetDlgItem(IDC_LOCATION)->SetFocus();
return FALSE;
}
if (m_strUnit.IsEmpty())
{
MessageBox("请输入单位!", "提示", MB_ICONINFORMATION);
GetDlgItem(IDC_UNIT)->SetFocus();
return FALSE;
}
int nTemp = atoi(LPCTSTR(m_strNewQuantity));
if (nTemp <= 0)
{
MessageBox("请正确输入新进货的数量!", "提示", MB_ICONINFORMATION);
GetDlgItem(IDC_NEWQUANTITY)->SetFocus();
((CEdit *)GetDlgItem(IDC_NEWQUANTITY))->SetSel(0, -1);
return FALSE;
}
double dblTemp = atof(LPCTSTR(m_strInPrice));
if (dblTemp <= 0)
{
MessageBox("请正确输入进价!","提示",MB_ICONINFORMATION);
GetDlgItem(IDC_INPRICE)->SetFocus();
((CEdit *)GetDlgItem(IDC_INPRICE))->SetSel(0, -1);
return FALSE;
}
dblTemp = atof(LPCTSTR(m_strOutPrice));
if (dblTemp <= 0)
{
MessageBox("请正确输入零售价!","提示",MB_ICONINFORMATION);
GetDlgItem(IDC_OUTPRICE)->SetFocus();
((CEdit *)GetDlgItem(IDC_OUTPRICE))->SetSel(0, -1);
return FALSE;
}
if (m_strWhere.IsEmpty())
{
MessageBox("请输入购货单位名称!", "提示", MB_ICONINFORMATION);
GetDlgItem(IDC_WHERE)->SetFocus();
return FALSE;
}
return TRUE;
}
//-----------------------------------------------------------------------------
// 功能: 复位所有输入控件的内容,并把焦点重新设在品名上
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CBuyOperView::Reset()
{
m_strMedName.Empty();
m_strSpecification.Empty();
m_strType.Empty();
m_strLocation.Empty();
m_strNewQuantity.Empty();
m_strUnit.Empty();
m_strInPrice.Empty();
m_strOutPrice.Empty();
m_strMemo.Empty();
UpdateData(FALSE);
GetDlgItem(IDC_MEDNAME)->SetFocus();
}
//-----------------------------------------------------------------------------
// 功能: 计算本次进货的总额,按照List2中显示的内容来计算
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CBuyOperView::GetTotalMoney()
{
double fTotal = 0.0;
for (int i = 0; i < m_ctlList2.GetItemCount(); i++)
{
CString str1 = m_ctlList2.GetItemText(i, 4);
CString str2 = m_ctlList2.GetItemText(i, 6);
fTotal += atoi(LPCTSTR(str1)) * atof((LPCTSTR)str2);
}
CString strTotal;
strTotal.Format("%.2f",fTotal);
SetDlgItemText(IDC_EDIT8,strTotal);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -