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

📄 stockinput.cpp

📁 一个简易的医药销售管理系统源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// StockInput.cpp : 实现文件
//

#include "stdafx.h"
#include "MedicineSaleManages.h"
#include "StockInput.h"
#include ".\stockinput.h"
#include "StockEnterData.h"
#include "comdef.h"
#include "excel9.h"


// CStockInput 对话框

IMPLEMENT_DYNAMIC(CStockInput, CDialog)
CStockInput::CStockInput(CWnd* pParent /*=NULL*/)
	: CDialog(CStockInput::IDD, pParent)
	, window_type(FALSE)
	, billid(_T(""))
{
}

CStockInput::~CStockInput()
{
}

void CStockInput::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_STOCKLIST1, m_list);
	DDX_Control(pDX, IDC_FINDNAME, m_findname);
	DDX_Control(pDX, IDC_NAME, m_name);
	DDX_Control(pDX, IDC_SPEC, m_spec);
	DDX_Control(pDX, IDC_APPROVALNUMBER, m_approvalnumber);
	DDX_Control(pDX, IDC_STOCKFACTORY, m_stockfactory);
	DDX_Control(pDX, IDC_BATCHNUMBER, m_batchnumber);
	DDX_Control(pDX, IDC_MAKEDATE, m_makedate);
	DDX_Control(pDX, IDC_VALIDATE, m_validate);
	DDX_Control(pDX, IDC_NUMBER, m_number);
	DDX_Control(pDX, IDC_UNIT, m_unit);
	DDX_Control(pDX, IDC_STOCKMONEY, m_stockmoney);
	DDX_Control(pDX, IDC_PROGRESS, m_progress);
	DDX_Control(pDX, IDC_TYPE, m_type);
	DDX_Control(pDX, IDC_CONDITION, m_condition);
	DDX_Control(pDX, IDC_FORM, m_form);
	DDX_Control(pDX, IDC_CONCLUSION, m_conclusion);
	DDX_Control(pDX, IDC_ACCE, m_acce);
}


BEGIN_MESSAGE_MAP(CStockInput, CDialog)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
	ON_EN_CHANGE(IDC_FINDNAME, OnEnChangeFindname)
	ON_CBN_SELCHANGE(IDC_NAME, OnCbnSelchangeName)
	ON_NOTIFY(NM_CLICK, IDC_STOCKLIST1, OnNMClickStocklist1)
	ON_CBN_SELCHANGE(IDC_SPEC, OnCbnSelchangeSpec)
	ON_CBN_SELCHANGE(IDC_STOCKFACTORY, OnCbnSelchangeStockfactory)
	ON_BN_CLICKED(IDC_OUTEXCEL, OnBnClickedOutexcel)
	ON_EN_KILLFOCUS(IDC_STOCKMONEY, OnEnKillfocusStockmoney)
	ON_EN_SETFOCUS(IDC_STOCKMONEY, OnEnSetfocusStockmoney)
	ON_EN_SETFOCUS(IDC_FINDNAME, OnEnSetfocusFindname)
	ON_CBN_SETFOCUS(IDC_NAME, OnCbnSetfocusName)
	ON_CBN_SETFOCUS(IDC_SPEC, OnCbnSetfocusSpec)
	ON_CBN_SETFOCUS(IDC_STOCKFACTORY, OnCbnSetfocusStockfactory)
	ON_EN_SETFOCUS(IDC_BATCHNUMBER, OnEnSetfocusBatchnumber)
	ON_BN_CLICKED(IDC_ALLSELECT, OnBnClickedAllselect)
	ON_BN_CLICKED(IDC_NOSELECT, OnBnClickedNoselect)
	ON_BN_CLICKED(IDC_ALLORNO, OnBnClickedAllorno)
	ON_NOTIFY(NM_DBLCLK, IDC_STOCKLIST1, OnNMDblclkStocklist1)
	ON_NOTIFY(NM_RDBLCLK, IDC_STOCKLIST1, OnNMRdblclkStocklist1)
	ON_BN_CLICKED(IDC_STOCKENTER, OnBnClickedStockenter)
	ON_CBN_SETFOCUS(IDC_TYPE, OnCbnSetfocusType)
	ON_CBN_SETFOCUS(IDC_FORM, OnCbnSetfocusForm)
	ON_CBN_SETFOCUS(IDC_CONCLUSION, OnCbnSetfocusConclusion)
	ON_CBN_SETFOCUS(IDC_CONDITION, OnCbnSetfocusCondition)
	ON_EN_SETFOCUS(IDC_PER, OnEnSetfocusPer)
	ON_NOTIFY(NM_SETFOCUS, IDC_ACCE, OnNMSetfocusAcce)
	ON_EN_SETFOCUS(IDC_APPROVALNUMBER, OnEnSetfocusApprovalnumber)
	ON_NOTIFY(NM_SETFOCUS, IDC_MAKEDATE, OnNMSetfocusMakedate)
	ON_NOTIFY(NM_SETFOCUS, IDC_VALIDATE, OnNMSetfocusValidate)
	ON_CBN_SETFOCUS(IDC_NUMBER, OnCbnSetfocusNumber)
	ON_CBN_SETFOCUS(IDC_UNIT, OnCbnSetfocusUnit)
END_MESSAGE_MAP()

void CStockInput::OnBnClickedCancel()
{
	OnCancel();
}

BOOL CStockInput::OnInitDialog()
{
	CDialog::OnInitDialog();
	m_stockmoney.SubclassDlgItem( IDC_STOCKMONEY, this );
	m_stockmoney.bkColor( RGB(255, 255, 255) );
	m_stockmoney.textColor( RGB(0,0,255) );
	m_stockmoney.setFont( -14 );
	m_makedate.SetFormat("yyyy-MM-dd");
	m_validate.SetFormat("yyyy-MM-dd");
	m_acce.SetFormat("yyyy-MM-dd");
	DWORD style;
	style=m_list.GetExStyle();  //获取样式
	style=(style|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES) ; //设置样式
	m_list.SetExtendedStyle(style); //应用样式
	m_list.InsertColumn(1,"录单日期",LVCFMT_LEFT,160);
	m_list.InsertColumn(1,"药品名称",LVCFMT_LEFT,160);
	m_list.InsertColumn(2,"规格",LVCFMT_LEFT,80);
	m_list.InsertColumn(3,"批准文号",LVCFMT_LEFT,120);
	m_list.InsertColumn(4,"生产厂家",LVCFMT_LEFT,160);
	m_list.InsertColumn(5,"生产批号",LVCFMT_LEFT,80);
	m_list.InsertColumn(6,"生产日期",LVCFMT_LEFT,100);
	m_list.InsertColumn(7,"有效期",LVCFMT_LEFT,100);
	m_list.InsertColumn(8,"数量",LVCFMT_LEFT,60);
	m_list.InsertColumn(9,"单位",LVCFMT_LEFT,40);
	m_list.InsertColumn(10,"单价(元)",LVCFMT_LEFT,60);
	m_list.InsertColumn(11,"合计(元)",LVCFMT_LEFT,60);
	m_list.InsertColumn(12,"药品剂型",LVCFMT_LEFT,60);
	m_list.InsertColumn(13,"质量状况",LVCFMT_LEFT,60);
	m_list.InsertColumn(14,"外观性状",LVCFMT_LEFT,60);
	m_list.InsertColumn(15,"验收人员",LVCFMT_LEFT,60);
	m_list.InsertColumn(16,"验收结论",LVCFMT_LEFT,60);
	m_list.InsertColumn(17,"验收时间",LVCFMT_LEFT,60);
	CString str;
	for(int number=1;number<=2000;number++)
	{
		str.Format("%d",number);
		m_number.AddString(str);
	}
	CString strSQL;
	m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
	strSQL="select * from unit";
	m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
			((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
			adOpenDynamic,adLockPessimistic,adCmdText);
	while(!(m_pRecordset->adoEOF))
	{
		str=(LPCSTR)_bstr_t(m_pRecordset->GetCollect("name"));
		if(!str.IsEmpty())
			m_unit.AddString(str);
		if(!(m_pRecordset->adoEOF))
			m_pRecordset->MoveNext();
	}
	m_pRecordset->Close();
	strSQL="select * from medtype where mt_name<>']'";
	m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
			((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
			adOpenDynamic,adLockPessimistic,adCmdText);
	while(!(m_pRecordset->adoEOF))
	{
		str=(LPCSTR)_bstr_t(m_pRecordset->GetCollect("mt_name"));
		if(!str.IsEmpty())
			m_type.AddString(str);
		if(!(m_pRecordset->adoEOF))
			m_pRecordset->MoveNext();
	}
	m_pRecordset->Close();
	//生成全局单据编号
	strSQL="select billid from billidx";
	m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
		((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
		adOpenDynamic,adLockPessimistic,adCmdText);
	if(!(m_pRecordset->adoEOF))
	{
		m_pRecordset->MoveLast();
		str=(LPCSTR)_bstr_t(m_pRecordset->GetCollect("billid"));
		if(!str.IsEmpty())
			if(atoi(str)>=0)
				billid.Format("%d",atoi(str)+1);
			else
				billid.Format("%d",1);
	}
	m_pRecordset->Close();
	/////
	if(window_type)
	{
		SetWindowText(_T("药品退货"));
		m_list.SetTextColor(RGB(0,64,128));
		strSQL="select * from outgoods";
		GetDlgItem(IDC_STOCKENTER)->EnableWindow(0);
	}
	else
	{
		m_list.SetTextColor(RGB(128,0,0));
		strSQL="select * from productdetail";
	}
	m_pRecordset1.CreateInstance(_T("ADODB.Recordset"));
	m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
		((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
		adOpenDynamic,adLockPessimistic,adCmdText);
	int row=0;
	CTime t;
	m_acce.GetTime(t);
	CString str0=t.Format("%Y年%m月%d日");
	while(!(m_pRecordset->adoEOF))
	{
		m_list.InsertItem(row,str0);//更新时重复日期
		CString field=(LPCSTR)_bstr_t(m_pRecordset->GetCollect("p_id"));//药品编号
		if(field!=_T("0"))
		{
			strSQL="select name from products where product_id=";
			strSQL+=field;
			m_pRecordset1->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
				((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
				adOpenDynamic,adLockPessimistic,adCmdText);//从products表中查询出对应药品名
			m_list.SetItemText(row,1,(LPCSTR)_bstr_t(m_pRecordset1->GetCollect("name")));
			m_pRecordset1->Close();
		}
		else
			m_list.SetItemText(row,1,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("p_id")));
		//m_list.SetItemText(row,1,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("name")));
		//m_list.SetItemText(row,2,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("sepc")));
		//m_list.SetItemText(row,3,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("factory")));
		//m_list.SetItemText(row,4,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("unit")));
		//m_list.SetItemText(row,5,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("number")));
		//m_list.SetItemText(row,6,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("readem")));
		if(!(m_pRecordset->adoEOF))
			m_pRecordset->MoveNext();
		row++;
	}
	m_pRecordset->Close();
	m_pRecordset=NULL;
	m_pRecordset1=NULL;
	m_condition.AddString("正常");
	m_condition.AddString("不正常");
	m_form.AddString("合格");
	m_form.AddString("不合格");
	m_conclusion.AddString("合格");
	m_conclusion.AddString("不合格");
	m_tooltip.Create(this,TTS_ALWAYSTIP);
	m_tooltip.Activate(TRUE);
	m_tooltip.AddTool(GetDlgItem(IDC_FINDNAME),IDS_FINDNAME);
	m_tooltip.AddTool(GetDlgItem(IDC_NAME),IDS_GETNAME);
	m_tooltip.AddTool(GetDlgItem(IDC_SPEC),IDC_GETSEPC);
	m_tooltip.AddTool(GetDlgItem(IDC_STOCKFACTORY),IDC_GETFACTORY);
	m_tooltip.AddTool(GetDlgItem(IDC_APPROVALNUMBER),IDS_APPROVALNUMBER);
	m_tooltip.AddTool(GetDlgItem(IDC_STATICPRICE),IDS_STATICPRICE);
	m_tooltip.AddTool(GetDlgItem(IDC_BATCHNUMBER),IDS_BATCHNUMBER);
	m_tooltip.AddTool(GetDlgItem(IDC_MAKEDATE),IDS_MAKEDATE);
	m_tooltip.AddTool(GetDlgItem(IDC_VALIDATE),IDS_VALIDATE);
	m_tooltip.AddTool(GetDlgItem(IDC_NUMBER),IDS_NUMBER);
	m_tooltip.AddTool(GetDlgItem(IDC_UNIT),IDS_UNIT);
	m_tooltip.AddTool(GetDlgItem(IDC_STOCKMONEY),IDS_MONEY);
	m_tooltip.AddTool(GetDlgItem(IDOK),IDS_RECORDSAVE);
	m_tooltip.AddTool(GetDlgItem(IDC_STOCKLIST1),IDS_STOCKLIST1);
	m_tooltip.AddTool(GetDlgItem(IDC_OUTEXCEL),IDS_INPUTOUTEXCEL);
	m_tooltip.AddTool(GetDlgItem(IDC_ALLSELECT),IDS_ALLSELECT);
	m_tooltip.AddTool(GetDlgItem(IDC_NOSELECT),IDS_NOSELECT);
	m_tooltip.AddTool(GetDlgItem(IDC_ALLORNO),IDS_ALLORNO);
	m_tooltip.AddTool(GetDlgItem(IDC_TYPE),IDS_TYPE);
	m_tooltip.AddTool(GetDlgItem(IDC_CONDITION),IDS_CONDITION);
	m_tooltip.AddTool(GetDlgItem(IDC_FORM),IDS_FORM);
	m_tooltip.AddTool(GetDlgItem(IDC_CONCLUSION),IDS_CONCLUSION);
	m_tooltip.AddTool(GetDlgItem(IDC_ACCE),IDS_ACCE);
	m_tooltip.AddTool(GetDlgItem(IDC_PER),IDS_PER);
	m_tooltip.AddTool(GetDlgItem(IDC_STOCKENTER),IDS_STOCKENTER);
	return TRUE;
}

void CStockInput::OnEnChangeFindname()//根据关键字查出药品名并填入名称框
{
	m_name.ResetContent();
	m_spec.ResetContent();
	m_stockfactory.ResetContent();
	SetDlgItemText(IDC_APPROVALNUMBER,_T(""));
	SetDlgItemText(IDC_BATCHNUMBER,_T(""));
	m_number.SetCurSel(-1);
	m_unit.SetCurSel(-1);
	SetDlgItemText(IDC_STOCKMONEY,_T(""));
	SetDlgItemText(IDC_STATICPRICE,_T(""));
	CString vaual,str;
	CString strSQL;
	GetDlgItemText(IDC_FINDNAME,vaual);
	strSQL="select name from products WHERE name LIKE '%["+vaual+"]%'";
	HRESULT hTRes;
	hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
	if (SUCCEEDED(hTRes))
	{
		hTRes = m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
				((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
				adOpenDynamic,adLockPessimistic,adCmdText);
		while(!(m_pRecordset->adoEOF))
		{
			str=(LPCSTR)_bstr_t(m_pRecordset->GetCollect("name"));
			if(!str.IsEmpty())
				m_name.AddString(str);
			if(!(m_pRecordset->adoEOF))
				m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();
	}
	m_pRecordset=NULL;
}

void CStockInput::OnCbnSelchangeName()//根据药品名称列出规格
{
	m_spec.ResetContent();
	m_stockfactory.ResetContent();
	SetDlgItemText(IDC_APPROVALNUMBER,_T(""));
	SetDlgItemText(IDC_BATCHNUMBER,_T(""));
	m_number.SetCurSel(-1);
	m_unit.SetCurSel(-1);
	SetDlgItemText(IDC_STOCKMONEY,_T(""));
	SetDlgItemText(IDC_STATICPRICE,_T(""));
	CString vaual,str;
	CString strSQL;
	m_name.GetLBText(m_name.GetCurSel(),vaual);
	strSQL="select standard from products WHERE name='"+vaual+"'";
	HRESULT hTRes;
	hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
	if (SUCCEEDED(hTRes))
	{
		hTRes = m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
				((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
				adOpenDynamic,adLockPessimistic,adCmdText);
		while(!(m_pRecordset->adoEOF))
		{
			str=(LPCSTR)_bstr_t(m_pRecordset->GetCollect("standard"));
			if(!str.IsEmpty())
				m_spec.AddString(str);
			if(!(m_pRecordset->adoEOF))
				m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();
	}
	m_pRecordset=NULL;
}

void CStockInput::OnCbnSelchangeSpec()//根据药品名称及规格列出厂家
{
	m_stockfactory.ResetContent();
	SetDlgItemText(IDC_APPROVALNUMBER,_T(""));
	SetDlgItemText(IDC_BATCHNUMBER,_T(""));
	m_number.SetCurSel(-1);
	m_unit.SetCurSel(-1);
	SetDlgItemText(IDC_STOCKMONEY,_T(""));
	SetDlgItemText(IDC_STATICPRICE,_T(""));
	CString vaual1,vaual2,str;
	CString strSQL;
	m_name.GetLBText(m_name.GetCurSel(),vaual1);
	m_spec.GetLBText(m_spec.GetCurSel(),vaual2);
	strSQL="select makearea from products WHERE name='"+vaual1+"'";
	strSQL+=" and standard='"+vaual2+"'";
	HRESULT hTRes;
	hTRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
	if (SUCCEEDED(hTRes))
	{
		hTRes = m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
				((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
				adOpenDynamic,adLockPessimistic,adCmdText);
		while(!(m_pRecordset->adoEOF))
		{
			str=(LPCSTR)_bstr_t(m_pRecordset->GetCollect("makearea"));
			if(!str.IsEmpty())
				m_stockfactory.AddString(str);
			if(!(m_pRecordset->adoEOF))
				m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();
	}
	m_pRecordset=NULL;
}

void CStockInput::OnCbnSelchangeStockfactory()//根据药品名称及规格、厂家,列出批准文号,价格,单位,
{
	SetDlgItemText(IDC_APPROVALNUMBER,_T(""));
	SetDlgItemText(IDC_BATCHNUMBER,_T(""));
	m_number.SetCurSel(-1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -