📄 entergoods.cpp
字号:
// EnterGoods.cpp : 实现文件
//
#include "stdafx.h"
#include "MedicineSaleManages.h"
#include "EnterGoods.h"
#include ".\entergoods.h"
#include "comdef.h"
#include "excel9.h"
// CEnterGoods 对话框
IMPLEMENT_DYNAMIC(CEnterGoods, CDialog)
CEnterGoods::CEnterGoods(CWnd* pParent /*=NULL*/)
: CDialog(CEnterGoods::IDD, pParent)
{
}
CEnterGoods::~CEnterGoods()
{
}
void CEnterGoods::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_list1);
DDX_Control(pDX, IDC_NUMBER, m_number);
DDX_Control(pDX, IDC_UNIT, m_unit);
DDX_Control(pDX, IDC_NAME, m_name);
DDX_Control(pDX, IDC_READEM, m_readem);
DDX_Control(pDX, IDC_GETNAME, m_getname);
DDX_Control(pDX, IDC_GETSEPC, m_getsepc);
DDX_Control(pDX, IDC_GETFACTORY, m_getfactory);
DDX_Control(pDX, IDC_READEM2, m_readem2);
DDX_Control(pDX, IDC_READEM3, m_readem3);
DDX_Control(pDX, IDC_ACCE, m_acce);
}
BEGIN_MESSAGE_MAP(CEnterGoods, CDialog)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnNMClickList1)
ON_BN_CLICKED(IDC_INPUTOUTEXCEL, OnBnClickedInputoutexcel)
ON_CBN_SELCHANGE(IDC_GETNAME, OnCbnSelchangeGetname)
ON_CBN_SELCHANGE(IDC_GETSEPC, OnCbnSelchangeGetsepc)
ON_CBN_SELCHANGE(IDC_GETFACTORY, OnCbnSelchangeGetfactory)
ON_EN_CHANGE(IDC_NAME, OnEnChangeName)
ON_EN_KILLFOCUS(IDC_READEM, OnEnKillfocusReadem)
ON_EN_SETFOCUS(IDC_NAME, OnEnSetfocusName)
ON_CBN_SETFOCUS(IDC_GETNAME, OnCbnSetfocusGetname)
ON_CBN_SETFOCUS(IDC_GETSEPC, OnCbnSetfocusGetsepc)
ON_CBN_SETFOCUS(IDC_GETFACTORY, OnCbnSetfocusGetfactory)
ON_EN_SETFOCUS(IDC_READEM, OnEnSetfocusReadem)
ON_BN_CLICKED(IDC_ALLSELECT, OnBnClickedAllselect)
ON_BN_CLICKED(IDC_NOSELECT, OnBnClickedNoselect)
ON_BN_CLICKED(IDC_ALLORNO, OnBnClickedAllorno)
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnNMDblclkList1)
ON_NOTIFY(NM_RDBLCLK, IDC_LIST1, OnNMRdblclkList1)
ON_EN_SETFOCUS(IDC_READEM2, OnEnSetfocusReadem2)
ON_EN_SETFOCUS(IDC_READEM3, OnEnSetfocusReadem3)
ON_NOTIFY(NM_SETFOCUS, IDC_ACCE, OnNMSetfocusAcce)
ON_CBN_SETFOCUS(IDC_UNIT, OnCbnSetfocusUnit)
ON_CBN_SETFOCUS(IDC_NUMBER, OnCbnSetfocusNumber)
END_MESSAGE_MAP()
void CEnterGoods::OnBnClickedCancel()//退出
{
OnCancel();
}
BOOL CEnterGoods::OnInitDialog()
{
CDialog::OnInitDialog();
m_readem.SubclassDlgItem( IDC_READEM, this );
m_readem.bkColor( RGB(255, 255, 255) );
m_readem.textColor( RGB(0,0,255) );
m_readem.setFont( -14 );
m_acce.SetFormat("yyyy-MM-dd");
DWORD style;
style=m_list1.GetExStyle(); //获取样式
style=(style|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES) ; //设置样式
m_list1.SetExtendedStyle(style); //应用样式
m_list1.SetTextColor(RGB(128,0,0));
m_list1.InsertColumn(0,"填写日期",LVCFMT_LEFT,200);
m_list1.InsertColumn(1,"药品名称",LVCFMT_LEFT,160);
m_list1.InsertColumn(2,"规格",LVCFMT_LEFT,80);
m_list1.InsertColumn(3,"生产厂家",LVCFMT_LEFT,160);
m_list1.InsertColumn(4,"单位",LVCFMT_LEFT,60);
m_list1.InsertColumn(5,"数量",LVCFMT_LEFT,40);
m_list1.InsertColumn(6,"质量管理人",LVCFMT_LEFT,80);
m_list1.InsertColumn(7,"负责人",LVCFMT_LEFT,80);
m_list1.InsertColumn(8,"备注",LVCFMT_LEFT,60);
CString str;
for(int number=1;number<=2000;number++)
{
str.Format("%d",number);
m_number.AddString(str);
}
CString strSQL;
strSQL="select * from unit";
m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
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 entergoods";
m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
adOpenDynamic,adLockPessimistic,adCmdText);
int row=0;
while(!(m_pRecordset->adoEOF))
{
m_list1.InsertItem(row,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("g_id")));
m_list1.SetItemText(row,1,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("name")));
m_list1.SetItemText(row,2,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("sepc")));
m_list1.SetItemText(row,3,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("factory")));
m_list1.SetItemText(row,4,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("unit")));
m_list1.SetItemText(row,5,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("number")));
m_list1.SetItemText(row,6,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("qp")));
m_list1.SetItemText(row,7,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("rp")));
m_list1.SetItemText(row,8,(LPCSTR)_bstr_t(m_pRecordset->GetCollect("readem")));
if(!(m_pRecordset->adoEOF))
m_pRecordset->MoveNext();
row++;
}
m_pRecordset->Close();
m_pRecordset=NULL;
m_tooltip.Create(this,TTS_ALWAYSTIP);
m_tooltip.Activate(TRUE);
m_tooltip.AddTool(GetDlgItem(IDC_NAME),IDS_FINDNAME);
m_tooltip.AddTool(GetDlgItem(IDC_GETNAME),IDS_GETNAME);
m_tooltip.AddTool(GetDlgItem(IDC_GETSEPC),IDS_GETSEPC);
m_tooltip.AddTool(GetDlgItem(IDC_GETFACTORY),IDS_GETFACTORY);
m_tooltip.AddTool(GetDlgItem(IDC_UNIT),IDS_UNIT);
m_tooltip.AddTool(GetDlgItem(IDC_NUMBER),IDS_NUMBER);
m_tooltip.AddTool(GetDlgItem(IDC_READEM),IDS_GETREADEM);
m_tooltip.AddTool(GetDlgItem(IDOK),IDS_RECORDSAVE);
m_tooltip.AddTool(GetDlgItem(IDC_LIST1),IDS_GETLIST1);
m_tooltip.AddTool(GetDlgItem(IDC_INPUTOUTEXCEL),IDS_GETINPUTOUTEXCEL);
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_READEM2),IDS_READEM2);
m_tooltip.AddTool(GetDlgItem(IDC_READEM3),IDS_READEM3);
m_tooltip.AddTool(GetDlgItem(IDC_ACCE),IDS_ACCE);
return TRUE;
}
void CEnterGoods::OnBnClickedOk()//保存数据
{
CString str0,str1,str2,str3,str4,str5,str6,str7,str8;
str0=str1=str2=str3=str4=str5=str6=_T("");
if(m_getname.GetCurSel()<0)
GetDlgItemText(IDC_GETNAME,str1);
else
m_getname.GetLBText(m_getname.GetCurSel(),str1);
CTime t;
m_acce.GetTime(t);
str0=t.Format("%Y年%m月%d日");
if(str1.IsEmpty())
{
AfxMessageBox("必须录入药品名称!");
GotoDlgCtrl(GetDlgItem(IDC_GETNAME));
return;
}
if(m_getsepc.GetCurSel()<0)
GetDlgItemText(IDC_GETSEPC,str2);
else
m_getsepc.GetLBText(m_getsepc.GetCurSel(),str2);
if(str2.IsEmpty())
{
AfxMessageBox("必须录入药品规格!");
GotoDlgCtrl(GetDlgItem(IDC_GETSEPC));
return;
}
if(m_getfactory.GetCurSel()<0)
GetDlgItemText(IDC_GETFACTORY,str3);
else
m_getfactory.GetLBText(m_getfactory.GetCurSel(),str3);
if(str3.IsEmpty())
{
AfxMessageBox("必须录入药品生产厂家!");
GotoDlgCtrl(GetDlgItem(IDC_GETFACTORY));
return;
}
if(m_unit.GetCurSel()>=0)
m_unit.GetLBText(m_unit.GetCurSel(),str4);
else
{
AfxMessageBox("必须录入药品单位!");
GotoDlgCtrl(GetDlgItem(IDC_UNIT));
return;
}
if(m_number.GetCurSel()>=0)
m_number.GetLBText(m_number.GetCurSel(),str5);
else
{
AfxMessageBox("必须录入药品数量!");
GotoDlgCtrl(GetDlgItem(IDC_NUMBER));
return;
}
GetDlgItemText(IDC_READEM,str6);
GetDlgItemText(IDC_READEM2,str7);
GetDlgItemText(IDC_READEM3,str8);
if(str7.IsEmpty())
{
AfxMessageBox("质量管理人必须签字!");
GotoDlgCtrl(GetDlgItem(IDC_READEM2));
return;
}
if(str8.IsEmpty())
{
AfxMessageBox("负责人必须签字!");
GotoDlgCtrl(GetDlgItem(IDC_READEM3));
return;
}
CString strSQL="select * from entergoods";
m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),adOpenDynamic,adLockPessimistic,adCmdText);
m_pRecordset->AddNew();
m_pRecordset->PutCollect("g_id",_variant_t(str0));
m_pRecordset->PutCollect("name",_variant_t(str1));
m_pRecordset->PutCollect("sepc",_variant_t(str2));
m_pRecordset->PutCollect("factory",_variant_t(str3));
m_pRecordset->PutCollect("unit",_variant_t(str4));
m_pRecordset->PutCollect("number",_variant_t(str5));
m_pRecordset->PutCollect("readem",_variant_t(str6));
m_pRecordset->PutCollect("qp",_variant_t(str7));
m_pRecordset->PutCollect("rp",_variant_t(str8));
m_pRecordset->Update();
m_pRecordset->Close();
m_pRecordset=NULL;
int row=m_list1.GetItemCount();
m_list1.InsertItem(row,str0);
m_list1.SetItemText(row,1,str1);
m_list1.SetItemText(row,2,str2);
m_list1.SetItemText(row,3,str3);
m_list1.SetItemText(row,4,str4);
m_list1.SetItemText(row,5,str5);
m_list1.SetItemText(row,6,str7);
m_list1.SetItemText(row,7,str8);
m_list1.SetItemText(row,8,str6);
m_list1.SetCheck(row,1);
SetDlgItemText(IDC_NAME,_T(""));
if(m_getname.GetCurSel()<0)
SetDlgItemText(IDC_GETNAME,_T(""));
else
m_getname.SetCurSel(-1);
if(m_getsepc.GetCurSel()<0)
SetDlgItemText(IDC_GETSEPC,_T(""));
else
m_getsepc.SetCurSel(-1);
if(m_getfactory.GetCurSel()<0)
SetDlgItemText(IDC_GETFACTORY,_T(""));
else
m_getfactory.SetCurSel(-1);
m_unit.SetCurSel(-1);
m_number.SetCurSel(-1);
SetDlgItemText(IDC_READEM,_T(""));
CRect rect;
m_list1.GetClientRect(rect);
m_list1.Scroll(CSize(0,rect.Height()*row));
GotoDlgCtrl(GetDlgItem(IDC_NAME));
}
void CEnterGoods::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)//支持SHIFT键选择,选中则取消,取消则选中
{
POSITION pos=m_list1.GetFirstSelectedItemPosition();
int r=m_list1.GetItemCount();
if(pos && r>=1)
{
int row=m_list1.GetNextSelectedItem(pos);
if(m_list1.GetCheck(row))
m_list1.SetCheck(row,0);
else
m_list1.SetCheck(row,1);
}
*pResult = 0;
}
void CEnterGoods::OnBnClickedInputoutexcel()
{
int rowcount=0,count=0;
rowcount=m_list1.GetItemCount();
for(int i=0;i<rowcount;i++)
if(m_list1.GetCheck(i))
count++;
if(rowcount<1 || count<1)
{
AfxMessageBox("当前没有记录,无数据可导出!");
return;
}
else
{
CString Directory="";
LPMALLOC lpMalloc;
CHAR szDisplayName[MAX_PATH];
CHAR szBuffer[MAX_PATH];
if ( ::SHGetMalloc( &lpMalloc ) != NOERROR )
{
AfxMessageBox( "执行路径错误,请退出后重试!" );
return;
}
BROWSEINFO BrowseInfo;
ZeroMemory(&BrowseInfo,sizeof(BROWSEINFO));
BrowseInfo.hwndOwner = GetSafeHwnd();
BrowseInfo.pidlRoot = NULL;
BrowseInfo.pszDisplayName = szDisplayName;
BrowseInfo.lpszTitle = "==== 选择存放导出文件的位置后单击[确定]按钮 ====";
BrowseInfo.ulFlags = BIF_USENEWUI;
BrowseInfo.lpfn = NULL;
BrowseInfo.lParam = 0;
LPITEMIDLIST lpItemIDList;
if ( ( lpItemIDList = ::SHBrowseForFolder( &BrowseInfo ) ) != NULL )
{
if ( ::SHGetPathFromIDList( lpItemIDList, szBuffer ) )
{
if ( szBuffer[0] == '\0' )
AfxMessageBox( "无效路径,重新选择!");
Directory = szBuffer;
}
else
AfxMessageBox( "无效路径,请重新选择!");
lpMalloc->Free( lpItemIDList );
lpMalloc->Release();
if(Directory.GetLength()>=1)
{
if(Directory.GetLength()>3)
Directory+="\\";
CTime t=CTime::GetCurrentTime();
CString filename=t.Format("%Y年%m月%d日");
filename+=_T("采购计划表.xls");
CString strPath=Directory+filename;
filename+=_T("\r\n\t工作表标签名:\r\n\t\t");
filename+=_T("采购计划表");
CString message=_T("请在确认以下信息后单击[是]按钮开始导出数据!!!\r\n");
message+="\r\n\t导出Excel文件至:\r\n\t\t";
message+=Directory;
message+="\r\n\t导出Excel文件名:\r\n\t\t";
message+=filename;
if(AfxMessageBox(message,MB_YESNO|MB_ICONQUESTION)==IDYES)
{
if(theApp.MyGetDiskFreeSpace(Directory.Left(3))<3145728)
{
AfxMessageBox("目标磁盘空间太小,不能完成导出!");
return;
}
theApp.BeginWaitCursor();
CFileFind find,find1;
BOOL bFound = find.FindFile(strPath.Left(strPath.GetLength()-1)+_T("t"));
if(bFound)
::remove(strPath.Left(strPath.GetLength()-1)+_T("t"));
find.Close();
BOOL bFound1=find1.FindFile(strPath.Left(strPath.GetLength()-1)+_T("s"));
if(bFound1)
::remove(strPath.Left(strPath.GetLength()-1)+_T("s"));
find1.Close();
theApp.DbToFile(_T("采购计划表.xlt"),strPath.Left(strPath.GetLength()-1)+_T("t1"));
LZARI Lzari;
Lzari.UnCompress(strPath.Left(strPath.GetLength()-1)+_T("t1"),strPath.Left(strPath.GetLength()-1)+_T("t"));
::remove(strPath.Left(strPath.GetLength()-1)+_T("t1"));
///
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -