📄 saleoperview.cpp
字号:
m_ctlList2.SetItemText(nIndex, i, strValues[i]);
}
}
// 修改库存表
char buf[100];
// 必须注意这里是m_strUserInput,不能是m_strMedName
sprintf(buf, "select * from 库存 where 品名 like \'%s\'", m_strUserInput + "%");
m_pRecordset->Open(_variant_t(buf),
_variant_t((IDispatch*)theApp.m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
pos = m_ListInPrice.GetHeadPosition();
for (i = 0; i < m_nItem; i++)
{
m_pRecordset->MoveNext(); // 指向当前纪录
m_ListInPrice.GetNext(pos); // 指向当前进价
}
CString strCurInPrice = m_ListInPrice.GetAt(pos); // 当前药品的进价
_variant_t vt1,vt2;
vt1.SetString("数量");
CString strTemp;
vt2.SetString(LPCTSTR(strRemainQuantity));
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 < 12; i++) // 12是销售表的字段数
{
switch (i)
{
case 4: // 售出的数量
vt1.SetString("数量");
vt2.SetString(LPCTSTR(m_strQuantity));
break;
case 7: // 金额
vt1.SetString("金额");
vt2.SetString(LPCTSTR(strMoney));
break;
case 8: // 售价
vt1.SetString("售价");
vt2.SetString(LPCTSTR(m_strPrice));
break;
case 9: // 日期
vt1.SetString("日期");
vt2.SetString(LPCTSTR(strDate));
break;
case 10: // 进价
vt1.SetString("进价");
vt2.SetString(LPCTSTR(strCurInPrice));
break;
case 11: // 购买单位
vt1.SetString("购买单位");
if (m_strCustomer.IsEmpty())
vt2.SetString("略");
else
vt2.SetString((LPCTSTR)m_strCustomer);
break;
default:
vt1.SetString(LPCTSTR(m_strFields1[i]));
vt2.SetString(LPCTSTR(strValues[i]));
}
m_pRecordset->PutCollect(vt1,vt2);
vt1.Clear();
vt2.Clear();
}
m_pRecordset->Update();
m_pRecordset->Close();
// 把控件复位
m_strPrice.Empty();
m_strQuantity.Empty();
m_strMedName.Empty();
UpdateData(FALSE);
GetDlgItem(IDC_NAME)->SetFocus();
GetDlgItem(IDC_UNDO)->EnableWindow(TRUE);
GetTotalMoney();
}
//-----------------------------------------------------------------------------
// 功能: 把List2中每个品种的销售金额加起来并显示出来
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CSaleOperView::GetTotalMoney()
{
double fTotal = 0.0;
for (int i = 0; i < m_ctlList2.GetItemCount(); i++)
{
CString strTemp = m_ctlList2.GetItemText(i, 8);
fTotal += atof(LPCTSTR(strTemp));
}
m_strTotal.Format("%.2f",fTotal);
UpdateData(FALSE);
}
//-----------------------------------------------------------------------------
// 功能: 撤销最近一次的销售操作
// 备注: 修改库存表,然后从销售表中删除最后一条记录
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CSaleOperView::OnUndo()
{
// 先修改库存数据库,把卖出的数量加回去
char buf[100];
sprintf(buf,"select * from 库存 where 品名 like \'%s\'",m_strUserInput + "%");
m_pRecordset->Open(_variant_t(buf),
_variant_t((IDispatch*)theApp.m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
for (int i = 0; i < m_nItem; i++) m_pRecordset->MoveNext();
_variant_t vt1,vt2;
vt1.SetString("数量");
CString strTemp;
strTemp.Format("%d",m_nOldQuantity);
vt2.SetString(LPCTSTR(strTemp));
m_pRecordset->PutCollect(vt1,vt2);
vt1.Clear();
vt2.Clear();
m_pRecordset->Update();
m_pRecordset->Close();
m_ctlList1.SetItemText(m_nItem, 4, strTemp); // 修改List1的显示
// 然后删除在销售表中的记录
m_pRecordset->Open(_variant_t("select * from 销售"),
_variant_t((IDispatch*)theApp.m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
m_pRecordset->MoveLast();
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Close();
int nItem = m_ctlList2.GetItemCount();
m_ctlList2.DeleteItem(nItem - 1);
GetDlgItem(IDC_UNDO)->EnableWindow(FALSE);
GetTotalMoney(); // 重新计算
}
//-----------------------------------------------------------------------------
// 功能: 打印本次销售操作的全部记录
// 作者: 刘文澜
// 日期: 2004/5/1
//-----------------------------------------------------------------------------
void CSaleOperView::OnPrintdata()
{
UpdateData();
if (m_strPerson.IsEmpty())
{
MessageBox("请填写收款人姓名!","提示",MB_ICONINFORMATION);
GetDlgItem(IDC_PERSON)->SetFocus();
return;
}
int nItemCount = m_ctlList2.GetItemCount();
if (nItemCount == 0)
{
MessageBox("无打印内容!", "提示", MB_ICONINFORMATION);
return;
}
CSetPrintDlg dlg;
dlg.m_nTotalPage = nItemCount / 24 + (nItemCount % 24 == 0 ? 0 : 1);
if (dlg.DoModal() != IDOK)
return;
int nCurPage = dlg.m_nCurPage; // 当前页
_Application WordApp;
if (!WordApp.CreateDispatch("Word.Application",NULL))
{
AfxMessageBox("创建MS-WORD服务失败!");
return;
}
WordApp.SetVisible(true); // 过程可视化
Documents docs;
_Document doc;
Range range;
Bookmarks bookmarks;
Bookmark bookmark;
Table table;
Tables tables;
docs=WordApp.GetDocuments();
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant start_line,end_line;
char szPath[MAX_PATH]; // MAX_PATH为260
::GetCurrentDirectory(MAX_PATH, szPath); // 获取当前目录
strcat(szPath, "\\零售凭证.dot");
COleVariant Dot(szPath);
doc = docs.Add(&Dot,&covOptional);
bookmarks = doc.GetBookmarks();
COleVariant tem1("buyer");
bookmark = bookmarks.Item(&tem1);
range = bookmark.GetRange();
range.SetText(m_strCustomer);
CTime t = CTime::GetCurrentTime();
CString strTemp;
COleVariant tem2("year");
bookmark = bookmarks.Item(&tem2);
range = bookmark.GetRange();
strTemp.Format("%d",t.GetYear());
range.SetText(strTemp);
COleVariant tem3("month");
bookmark = bookmarks.Item(&tem3);
range = bookmark.GetRange();
strTemp.Format("%d",t.GetMonth());
range.SetText(strTemp);
COleVariant tem4("day");
bookmark = bookmarks.Item(&tem4);
range = bookmark.GetRange();
strTemp.Format("%d",t.GetDay());
range.SetText(strTemp);
tables = doc.GetTables();
table = tables.Item(1);
double fTotal = 0.0;
int start = (nCurPage - 1) * 24; // 每页至多24行
for (int i = 0; i < 24; i++)
{
for (int j = 0; j < 9; j++)
{
Cell cell = table.Cell(i + 2, j + 1);
range = cell.GetRange();
range.SetText(m_ctlList2.GetItemText(start, j));
}
CString strTemp = m_ctlList2.GetItemText(start, 8);
fTotal += atof(LPCTSTR(strTemp));
start++;
if (start == m_ctlList2.GetItemCount())
break;
}
COleVariant tem5("total"); // 合计金额
bookmark = bookmarks.Item(&tem5);
range = bookmark.GetRange();
CString strTotal;
strTotal.Format("%.2f", fTotal);
range.SetText(strTotal); // 注意这里的Total
COleVariant tem6("person"); // 收款人
bookmark = bookmarks.Item(&tem6);
range = bookmark.GetRange();
range.SetText(m_strPerson);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -