⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saleoperview.cpp

📁 一个小型的医药零售管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			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 + -