📄 stockinput.cpp
字号:
// 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 + -