📄 printdbview.cpp
字号:
dc.MoveTo(15*iCharWidth,(10+2)*iCharHeight);
dc.LineTo((15+84)*iCharWidth,(10+2)*iCharHeight);
dc.MoveTo(15*iCharWidth,(10+2*10)*iCharHeight);
dc.LineTo((15+84)*iCharWidth,(10+2*10)*iCharHeight);
dc.MoveTo(15*iCharWidth,(10+2*21)*iCharHeight);
dc.LineTo((15+84)*iCharWidth,(10+2*21)*iCharHeight);
dc.MoveTo(15*iCharWidth,(10+2*31)*iCharHeight);
dc.LineTo((15+84)*iCharWidth,(10+2*31)*iCharHeight);
dc.MoveTo(15*iCharWidth,(10+2*34)*iCharHeight);
dc.LineTo((15+84)*iCharWidth,(10+2*34)*iCharHeight);
// delete &pen;
// delete &titleFont;
// delete &dataFont;
// delete &tm;
dc.EndPage(); //通知打印机驱动程序页结束
dc.EndDoc();//通知打印机驱动程序打印完毕
DeleteDC(dc.Detach());
}
}
else
{
return;
}
}
void CPrintDBView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
if (PrintType==2)
{
if (pInfo!=NULL) //if (pInfo!=NULL) 的判断,我们要识别是否是为打印做准备
{
if (circle<=ReturnPrintPages())
{
pInfo->m_bContinuePrinting=TRUE;
}else
pInfo->m_bContinuePrinting=FALSE;
}
}
CFormView::OnPrepareDC(pDC, pInfo);
//
// pDC->SetMapMode(MM_ANISOTROPIC);//转换坐标映射方式
//
// CSize size =CSize(1024,768);
//
// pDC->SetWindowExt(size);//确定窗口大小
//
// //得到实际设备每逻辑英寸的像素数量
//
// int xLogPixPerInch =pDC->GetDeviceCaps(LOGPIXELSX);
//
// int yLogPixPerInch =pDC->GetDeviceCaps(LOGPIXELSY);
//
// //得到设备坐标和逻辑坐标的比例
//
// long xExt =(long)0.9*size.cx * xLogPixPerInch/96;
//
// long yExt =(long)0.9*size.cy * yLogPixPerInch/96;
//
// pDC->SetViewportExt((int)xExt,(int)yExt);//确定视口大小
//
}
void CPrintDBView::OnToday()
{
// TODO: Add your command handler code here
try
{
if(!m_pRecordset->BOF)
{
m_pRecordset->MoveLast();
m_pRecordset->Move(-29);
}
else
{
AfxMessageBox("表内数据为空");
return;
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
TodayQuery();
}
void CPrintDBView::TodayQuery()
{
_variant_t var;
CString str1,str2;
CString date,section,cping,czhui,mp,fzhui,fping;
str1=str2="";
m_List.ResetContent();
iScreen1=iScreen2=iScreen3=iScreenDayNum=iCone1=iCone2=iCone3=iConeDayNum=0;
CString a,b,c,d,e,f,g;
a="年/月/日";b="时间段";c="成型玻屏";
d="成型玻锥";e="磨抛投型";f="封接投锥";g="封接投屏";
m_List.AddString(FilStrWithNul(a,11)+FilStrWithNul(b,12)+FilStrWithNul(c,12)+FilStrWithNul(d,12)+FilStrWithNul(e,12)+FilStrWithNul(f,12)+FilStrWithNul(g,12));
for (int i=1;i<31;i++)
{
var = m_pRecordset->GetCollect("年/月/日");
if(var.vt != VT_NULL)
date = (LPCSTR)_bstr_t(var);
else
date="";
var = m_pRecordset->GetCollect("时间段");
if(var.vt != VT_NULL)
section = (LPCSTR)_bstr_t(var);
else
section="";
var = m_pRecordset->GetCollect("成型玻屏");
if(var.vt != VT_NULL)
cping = (LPCSTR)_bstr_t(var);
else
cping="0";
var = m_pRecordset->GetCollect("成型玻锥");
if(var.vt != VT_NULL)
czhui = (LPCSTR)_bstr_t(var);
else
czhui="0";
var = m_pRecordset->GetCollect("磨抛投型");
if(var.vt != VT_NULL)
mp = (LPCSTR)_bstr_t(var);
else
mp="0";
var = m_pRecordset->GetCollect("封接投锥");
if(var.vt != VT_NULL)
fzhui = (LPCSTR)_bstr_t(var);
else
fzhui="0";
var = m_pRecordset->GetCollect("封接投屏");
if(var.vt != VT_NULL)
fping = (LPCSTR)_bstr_t(var);
else
fping="0";
if ((i>=1)&&(i<=9))
{
iScreen1+=atoi(cping);
iCone1+=atoi(czhui);
}
if ((i>=10)&&(i<=20))
{
iScreen2+=atoi(cping);
iCone2+=atoi(czhui);
}
if ((i>=21)&&(i<=30))
{
iScreen3+=atoi(cping);
iCone3+=atoi(czhui);
}
iScreenDayNum+=atoi(cping);
iConeDayNum+=atoi(czhui);
m_List.AddString(FilStrWithNul(date,11)+FilStrWithNul(section,12)+FilStrWithNul(cping,12)+FilStrWithNul(czhui,12)+FilStrWithNul(mp,12)+FilStrWithNul(fzhui,12)+FilStrWithNul(fping,12));
m_pRecordset->Move(1);
}
CanUseTotal=TRUE;
m_SumList.ResetContent();
HaveSum=FALSE;
PrintType=1;
return;
}
void CPrintDBView::OnUpdateToday(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(IsLinkTable);
}
void CPrintDBView::OnAdvancedQuery()
{
CAdvanceQuery dlg;
if(dlg.DoModal()==IDOK)
{
UpdateData(TRUE);
//检查数据库是否有数据
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveLast();
else
{
AfxMessageBox("表内数据为空");
return;
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
//得到数据库中的最新与最初的日期
_variant_t var,var1;
CString sdate,sdate1;
var = m_pRecordset->GetCollect("年/月/日");
sdate = (LPCSTR)_bstr_t(var);
m_pRecordset->MoveFirst();
var1=m_pRecordset->GetCollect("年/月/日");
sdate1=(LPCSTR)_bstr_t(var1);
//检查输入的日期是否有误
if (CStringCompare(dlg.m_DateTo,dlg.m_DateFrom))
{
if (CStringCompare(dlg.m_DateTo,sdate))
{
AfxMessageBox("您查询的截止日期晚于数据库中的最新记录,请您更新数据库或者重新核对日期!");
return;
}
else if(CStringCompare(sdate1,dlg.m_DateFrom))
{
AfxMessageBox("您查询的起始日期早于数据库中的最初记录,请您更新数据库或者重新核对日期!");
return;
}
}else
{
AfxMessageBox("输入有误!查询的截止日期早于起始日期,请重新输入!");
return;
}
AdvancedQuery(dlg.m_DateFrom,dlg.SecFrom,dlg.m_DateTo,dlg.SecTo);
}
}
void CPrintDBView::OnUpdateAdvancedQuery(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(IsLinkTable);
}
void CPrintDBView::AdvancedQuery(CString DateFrom, CString SecFrom, CString DateTo, CString SecTo)
{
_variant_t var;
CString str1,str2;
CString date,section,cping,czhui,mp,fzhui,fping;
str1=str2="";
m_pRecordset->MoveFirst();
while (!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("年/月/日");
str1 = (LPCSTR)_bstr_t(var);
////////////////////////////////////////////////////////////////
if (str1==DateFrom)
{
m_List.ResetContent();
iScreen1=iScreen2=iScreen3=iScreenDayNum=iCone1=iCone2=iCone3=iConeDayNum=0;
////////////////////////////
while (str1==DateFrom)
{
m_pRecordset->Move(-1);
var=m_pRecordset->GetCollect("年/月/日");
str1=(LPCSTR)_bstr_t(var);
}
m_pRecordset->Move(1);//找到匹配日期的最初时间段
//////////////////////////////////////////
var=m_pRecordset->GetCollect("时间段");
str1=(LPCSTR)_bstr_t(var);
while (str1!=SecFrom)
{
m_pRecordset->Move(1);
var=m_pRecordset->GetCollect("时间段");
str1=(LPCSTR)_bstr_t(var);
}/////////////////////////找到匹配的时间段
CString a,b,c,d,e,f,g;
a="年/月/日";b="时间段";c="成型玻屏";
d="成型玻锥";e="磨抛投型";f="封接投锥";g="封接投屏";
m_List.AddString(FilStrWithNul(a,11)+FilStrWithNul(b,12)+FilStrWithNul(c,12)+FilStrWithNul(d,12)+FilStrWithNul(e,12)+FilStrWithNul(f,12)+FilStrWithNul(g,12));
/////////////写表头/////////////////////////
while ((LPCSTR)_bstr_t(m_pRecordset->GetCollect("年/月/日"))!=DateTo)
{
var = m_pRecordset->GetCollect("年/月/日");
if(var.vt != VT_NULL)
date = (LPCSTR)_bstr_t(var);
else
date="";
var = m_pRecordset->GetCollect("时间段");
if(var.vt != VT_NULL)
section = (LPCSTR)_bstr_t(var);
else
section="";
var = m_pRecordset->GetCollect("成型玻屏");
if(var.vt != VT_NULL)
cping = (LPCSTR)_bstr_t(var);
else
cping="0";
var = m_pRecordset->GetCollect("成型玻锥");
if(var.vt != VT_NULL)
czhui = (LPCSTR)_bstr_t(var);
else
czhui="0";
var = m_pRecordset->GetCollect("磨抛投型");
if(var.vt != VT_NULL)
mp = (LPCSTR)_bstr_t(var);
else
mp="0";
var = m_pRecordset->GetCollect("封接投锥");
if(var.vt != VT_NULL)
fzhui = (LPCSTR)_bstr_t(var);
else
fzhui="0";
var = m_pRecordset->GetCollect("封接投屏");
if(var.vt != VT_NULL)
fping = (LPCSTR)_bstr_t(var);
else
fping="0";
iScreenDayNum+=atoi(cping);
iConeDayNum+=atoi(czhui);
m_List.AddString(FilStrWithNul(date,11)+FilStrWithNul(section,12)+FilStrWithNul(cping,12)+FilStrWithNul(czhui,12)+FilStrWithNul(mp,12)+FilStrWithNul(fzhui,12)+FilStrWithNul(fping,12));
m_pRecordset->Move(1);
}
while((LPCSTR)_bstr_t(m_pRecordset->GetCollect("时间段"))!=SecTo)
{
var = m_pRecordset->GetCollect("年/月/日");
if(var.vt != VT_NULL)
date = (LPCSTR)_bstr_t(var);
else
date="";
var = m_pRecordset->GetCollect("时间段");
if(var.vt != VT_NULL)
section = (LPCSTR)_bstr_t(var);
else
section="";
var = m_pRecordset->GetCollect("成型玻屏");
if(var.vt != VT_NULL)
cping = (LPCSTR)_bstr_t(var);
else
cping="0";
var = m_pRecordset->GetCollect("成型玻锥");
if(var.vt != VT_NULL)
czhui = (LPCSTR)_bstr_t(var);
else
czhui="0";
var = m_pRecordset->GetCollect("磨抛投型");
if(var.vt != VT_NULL)
mp = (LPCSTR)_bstr_t(var);
else
mp="0";
var = m_pRecordset->GetCollect("封接投锥");
if(var.vt != VT_NULL)
fzhui = (LPCSTR)_bstr_t(var);
else
fzhui="0";
var = m_pRecordset->GetCollect("封接投屏");
if(var.vt != VT_NULL)
fping = (LPCSTR)_bstr_t(var);
else
fping="0";
iScreenDayNum+=atoi(cping);
iConeDayNum+=atoi(czhui);
m_List.AddString(FilStrWithNul(date,11)+FilStrWithNul(section,12)+FilStrWithNul(cping,12)+FilStrWithNul(czhui,12)+FilStrWithNul(mp,12)+FilStrWithNul(fzhui,12)+FilStrWithNul(fping,12));
m_pRecordset->Move(1);
}
var = m_pRecordset->GetCollect("年/月/日");
if(var.vt != VT_NULL)
date = (LPCSTR)_bstr_t(var);
else
date="";
var = m_pRecordset->GetCollect("时间段");
if(var.vt != VT_NULL)
section = (LPCSTR)_bstr_t(var);
else
section="";
var = m_pRecordset->GetCollect("成型玻屏");
if(var.vt != VT_NULL)
cping = (LPCSTR)_bstr_t(var);
else
cping="0";
var = m_pRecordset->GetCollect("成型玻锥");
if(var.vt != VT_NULL)
czhui = (LPCSTR)_bstr_t(var);
else
czhui="0";
var = m_pRecordset->GetCollect("磨抛投型");
if(var.vt != VT_NULL)
mp = (LPCSTR)_bstr_t(var);
else
mp="0";
var = m_pRecordset->GetCollect("封接投锥");
if(var.vt != VT_NULL)
fzhui = (LPCSTR)_bstr_t(var);
else
fzhui="0";
var = m_pRecordset->GetCollect("封接投屏");
if(var.vt != VT_NULL)
fping = (LPCSTR)_bstr_t(var);
else
fping="0";
iScreenDayNum+=atoi(cping);
iConeDayNum+=atoi(czhui);
m_List.AddString(FilStrWithNul(date,11)+FilStrWithNul(section,12)+FilStrWithNul(cping,12)+FilStrWithNul(czhui,12)+FilStrWithNul(mp,12)+FilStrWithNul(fzhui,12)+FilStrWithNul(fping,12));
CanUseTotal=TRUE;
m_SumList.ResetContent();
HaveSum=FALSE;
PrintType=2;
return;
}
m_pRecordset->Move(30);
}
AfxMessageBox("数据库中不存在您检索的数据,请您核对日期后重新查询!");
}
int CPrintDBView::ReturnPrintPages()
{
int items,pages;
items=m_List.GetCount();
if (HaveSum)
{
items++;
}
pages=items/35;
if ((pages*35)!=items)
{
pages++;
}
return pages;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -