📄 entergoods.cpp
字号:
_Worksheet wsMysheet;
Range rgMyRge;
if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("创建Excel服务失败,要使用导出功能至少要求安装Microsoft Excel 2000!");
exit(1);
}
ExcelApp.SetVisible(false);
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t(strPath.Left(strPath.GetLength()-4))));
//得到Worksheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t(_T("采购计划表"))),true);
//得到全部Cells,此时,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
int row=m_list1.GetItemCount();
//ExcelApp.SetVisible(false);//
LPDISPATCH lpDisp;
lpDisp = wsMysheet.GetRange(_variant_t("A4"),_variant_t("A4"));
ASSERT(lpDisp);
rgMyRge.AttachDispatch(lpDisp);
lpDisp = rgMyRge.GetEntireRow();
rgMyRge.AttachDispatch(lpDisp);
for(int r=0;r<row-2;r++)
rgMyRge.Insert(_variant_t((long)1));//插入有格式的空行
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
//设置单元格的值
int rowcheck=0;
for(int r=0;r<row;r++)
{
for(int c=0;c<9;c++)
if(m_list1.GetCheck(r))
rgMyRge.SetItem(_variant_t((long)rowcheck+3),_variant_t((long)c+1),_variant_t(m_list1.GetItemText(r,c)));
if(m_list1.GetCheck(r))
rowcheck++;
}
//将表格保存
wsMysheet.SaveAs(strPath.Left(strPath.GetLength()-4)+_T(".xls"),vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing);
ExcelApp.SetVisible(true);
//wbMyBook.PrintPreview(_variant_t(false));
//释放对象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
::remove(strPath.Left(strPath.GetLength()-1)+_T("t"));
///
theApp.EndWaitCursor();
AfxMessageBox("数据导出完毕!");
}
else
AfxMessageBox("用户取消了导出!");
}
}
else
AfxMessageBox("用户取消了选择或导出!");
}
}
void CEnterGoods::OnCbnSelchangeGetname()//根据药品名称搜索药品规格
{
SetDlgItemText(IDC_GETSEPC,_T(""));
m_getsepc.ResetContent();
SetDlgItemText(IDC_GETFACTORY,_T(""));
m_getfactory.ResetContent();
m_number.SetCurSel(-1);
m_unit.SetCurSel(-1);
CString vaual,str;
CString strSQL;
if(m_getname.GetCurSel()>=0)
m_getname.GetLBText(m_getname.GetCurSel(),vaual);
else
GetDlgItemText(IDC_GETNAME,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_getsepc.AddString(str);
if(!(m_pRecordset->adoEOF))
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
m_pRecordset=NULL;
}
void CEnterGoods::OnCbnSelchangeGetsepc()//根据药品名称、规格搜索药品厂家
{
SetDlgItemText(IDC_GETFACTORY,_T(""));
m_getfactory.ResetContent();
m_number.SetCurSel(-1);
m_unit.SetCurSel(-1);
CString vaual1,vaual2,str;
CString strSQL;
if(m_getname.GetCurSel()>=0)
m_getname.GetLBText(m_getname.GetCurSel(),vaual1);
else
GetDlgItemText(IDC_GETNAME,vaual1);
if(m_getsepc.GetCurSel()>=0)
m_getsepc.GetLBText(m_getsepc.GetCurSel(),vaual2);
else
GetDlgItemText(IDC_GETSEPC,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_getfactory.AddString(str);
if(!(m_pRecordset->adoEOF))
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
m_pRecordset=NULL;
}
void CEnterGoods::OnCbnSelchangeGetfactory()//根据药品名称、规格、厂家搜索药品单位
{
m_unit.SetCurSel(-1);
CString vaual0,vaual1,vaual2,str1;
CString strSQL;
if(m_getname.GetCurSel()>=0)
m_getname.GetLBText(m_getname.GetCurSel(),vaual0);
else
GetDlgItemText(IDC_GETNAME,vaual0);
if(m_getsepc.GetCurSel()>=0)
m_getsepc.GetLBText(m_getsepc.GetCurSel(),vaual1);
else
GetDlgItemText(IDC_GETSEPC,vaual1);
if(m_getfactory.GetCurSel()>=0)
m_getfactory.GetLBText(m_getfactory.GetCurSel(),vaual2);
else
GetDlgItemText(IDC_GETFACTORY,vaual2);
strSQL="select productdetail.comment from productdetail,products WHERE products.name='"+vaual0+"'";
strSQL+=" and products.standard='"+vaual1+"'";
strSQL+=" and products.makearea='"+vaual2+"'";
strSQL+=" and products.product_id=productdetail.p_id";
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);
if(!(m_pRecordset->adoEOF))
{
str1=(LPCSTR)_bstr_t(m_pRecordset->GetCollect("comment"));
if(!(str1.IsEmpty()))
m_unit.SetCurSel(m_unit.FindString(0,str1.Right(2)));
}
m_pRecordset->Close();
}
m_pRecordset=NULL;
}
void CEnterGoods::OnEnChangeName()
{
SetDlgItemText(IDC_GETNAME,_T(""));
m_getname.ResetContent();
SetDlgItemText(IDC_GETSEPC,_T(""));
m_getsepc.ResetContent();
SetDlgItemText(IDC_GETFACTORY,_T(""));
m_getfactory.ResetContent();
m_number.SetCurSel(-1);
m_unit.SetCurSel(-1);
CString vaual,str;
CString strSQL;
GetDlgItemText(IDC_NAME,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_getname.AddString(str);
if(!(m_pRecordset->adoEOF))
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
m_pRecordset=NULL;
}
void CEnterGoods::OnEnKillfocusReadem()//如果是单价,则检查合法性并转换
{
CString stri,strf;
GetDlgItemText(IDC_READEM,stri);
char ch[]="0123456789";
BOOL xy=FALSE;
for(int y=0;y<strlen(ch);y++)
if(stri.GetAt(0)==ch[y])
xy=TRUE;
if(xy)//如果所输入的第一个字符为数字,则认为是单价,并进行校验、转换
{
//校验数据的有效性
if(!theApp.Examination(stri))
{
AfxMessageBox(_T("如果输入单价,请确保正确;如果输入其它信息,第一个字符必须不是数字!"));
SetDlgItemText(IDC_READEM,_T(""));
GotoDlgCtrl(GetDlgItem(IDC_READEM));
return;
}
//校验结束
strf.Format("%f",atof(stri));
SetDlgItemText(IDC_READEM,strf.Left(strf.Find('.',0)+1)+strf.Mid(strf.Find('.',0)+1,2));
}
}
void CEnterGoods::OnEnSetfocusName()
{
theApp.SetInputMethod(TRUE);
}
void CEnterGoods::OnCbnSetfocusGetname()
{
theApp.SetInputMethod(TRUE);
}
void CEnterGoods::OnCbnSetfocusGetsepc()
{
theApp.SetInputMethod(TRUE);
}
void CEnterGoods::OnCbnSetfocusGetfactory()
{
theApp.SetInputMethod(TRUE);
}
void CEnterGoods::OnEnSetfocusReadem()
{
theApp.SetInputMethod(FALSE);
}
BOOL CEnterGoods::PreTranslateMessage(MSG* pMsg)
{
m_tooltip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
void CEnterGoods::WinHelp(DWORD dwData, UINT nCmd)
{
}
void CEnterGoods::OnBnClickedAllselect()//全选
{
int row=m_list1.GetItemCount();
for(int x=0;x<row;x++)
m_list1.SetCheck(x,1);
}
void CEnterGoods::OnBnClickedNoselect()//全否
{
int row=m_list1.GetItemCount();
for(int x=0;x<row;x++)
m_list1.SetCheck(x,0);
}
void CEnterGoods::OnBnClickedAllorno()//反选
{
int row=m_list1.GetItemCount();
for(int x=0;x<row;x++)
if(m_list1.GetCheck(x))
m_list1.SetCheck(x,0);
else
m_list1.SetCheck(x,1);
}
void CEnterGoods::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)//双击左键修改
{
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
void CEnterGoods::OnNMRdblclkList1(NMHDR *pNMHDR, LRESULT *pResult)//双击右键删除
{
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
//void CEnterGoods::OnBnClickedInput()
//{
// CString strSQL;
// int row=m_list1.GetItemCount();
// m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
// /*try
// {
// strSQL="SELECT products.permitcode,products.medtype FROM products,entergoods WHERE products.name=entergoods.name and products.standard=entergoods.sepc and products.makearea=entergoods.factory";
// m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
// ((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
// adOpenDynamic,adLockPessimistic,adCmdText);
// }
// catch(_com_error *e)
// {
// AfxMessageBox(e->ErrorMessage());
// }*/
// CString str=_T("");
// for(int x=0;x<row;x++)
// {
// strSQL="SELECT products.permitcode,products.medtype FROM products,entergoods WHERE products.name='";//entergoods.name and products.standard=entergoods.sepc and products.makearea=entergoods.factory";
// strSQL+=m_list1.GetItemText(x,1);
// str+="' and products.standard='";
// strSQL+=m_list1.GetItemText(x,2);
// str+="' and products.makearea='";
// strSQL+=m_list1.GetItemText(x,3);
// strSQL+="'";
// AfxMessageBox(strSQL);
// m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(strSQL.GetLength()+1),
// ((CMedicineSaleManagesApp*)AfxGetApp())->m_pConn1.GetInterfacePtr(),
// adOpenDynamic,adLockPessimistic,adCmdText);
// _variant_t var;
// var=m_pRecordset->GetCollect("permitcode");
// if(var.vt!=NULL)
// str+=(LPCSTR)_bstr_t(var);
// str+="\r\n";
// //m_pRecordset->PutCollect("mypermitcode",m_pRecordset->GetCollect("permitcode"));
// //m_pRecordset->PutCollect("medtype",m_pRecordset->GetCollect("medtype"));
// //m_pRecordset->Update();
// m_pRecordset->Close();
// }
// CFile f("c:\\permitcode.txt",CFile::modeCreate | CFile::modeWrite);
// f.Write(str,str.GetLength());
// AfxMessageBox("导入完毕");
// ///
// m_pRecordset->Close();
//}
void CEnterGoods::OnEnSetfocusReadem2()
{
theApp.SetInputMethod(TRUE);
}
void CEnterGoods::OnEnSetfocusReadem3()
{
theApp.SetInputMethod(TRUE);
}
void CEnterGoods::OnNMSetfocusAcce(NMHDR *pNMHDR, LRESULT *pResult)
{
theApp.SetInputMethod(FALSE);
*pResult = 0;
}
void CEnterGoods::OnCbnSetfocusUnit()
{
theApp.SetInputMethod(FALSE);
}
void CEnterGoods::OnCbnSetfocusNumber()
{
theApp.SetInputMethod(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -