📄 viewdutyinfo.cpp
字号:
for(i=0;i<=nLine;i++)
{
nY1=nY2=nStartY+i*m_perlineHeight;
pDC->MoveTo(nX1,nY1);
pDC->LineTo(nX2,nY2);
}
nY1=nStartY;
nY2=nStartY+nLine*m_perlineHeight;
nPerItem=(m_paperWidth-m_perlineHeight*8)/5;
nX1=nX2=m_perlineHeight*4;
pDC->MoveTo(nX1,nY1);
pDC->LineTo(nX2,nY2);
nX1=nX2=m_perlineHeight*4+nPerItem;
pDC->MoveTo(nX1,nY1);
pDC->LineTo(nX2,nY2);
nX1=nX2=m_perlineHeight*4+3*nPerItem;
pDC->MoveTo(nX1,nY1);
pDC->LineTo(nX2,nY2);
nX1=nX2=m_paperWidth-m_perlineHeight*4;
pDC->MoveTo(nX1,nY1);
pDC->LineTo(nX2,nY2);
}
void CViewDutyInfo::DrawTexttoGrid(CDC* pDC,int nStartY,int nStartRecord,int nEndRecord)
{
CString str;
int i,nPerItem;
CRect rc;
nPerItem=(m_paperWidth-m_perlineHeight*8)/5;
nStartY+=(int)(0.1*m_perlineHeight);
rc.top=nStartY;
rc.bottom=nStartY+m_perlineHeight;
rc.left=m_perlineHeight*4;
rc.right=m_perlineHeight*4+nPerItem;
pDC->DrawText("用户名",&rc,DT_CENTER);
rc.left=m_perlineHeight*4+nPerItem;
rc.right=m_perlineHeight*4+3*nPerItem;
pDC->DrawText("接班时间",&rc,DT_CENTER);
rc.left=m_perlineHeight*4+3*nPerItem;
rc.right=m_paperWidth-m_perlineHeight*4;
pDC->DrawText("交班时间",&rc,DT_CENTER);
for(i=0;i<nEndRecord-nStartRecord+1;i++)
{
rc.top=nStartY+m_perlineHeight*(i+1);
rc.bottom=nStartY+m_perlineHeight*(i+2);
rc.left=m_perlineHeight*4;
rc.right=m_perlineHeight*4+nPerItem;
str=m_list1.GetItemText(nStartRecord-1+i, 0);
pDC->DrawText(str,&rc,DT_CENTER);
rc.left=m_perlineHeight*4+nPerItem;
rc.right=m_perlineHeight*4+3*nPerItem;
str=m_list1.GetItemText(nStartRecord-1+i, 1);
pDC->DrawText(str,&rc,DT_CENTER);
rc.left=m_perlineHeight*4+3*nPerItem;
rc.right=m_paperWidth-m_perlineHeight*4;
str=m_list1.GetItemText(nStartRecord-1+i, 2);
pDC->DrawText(str,&rc,DT_CENTER);
}
}
void CViewDutyInfo::Print(CDC* pDC, CPrintInfo* pInfo)
{
//4676*6744
CFont newFont;
CRect rc;
CFont* pOldFont;
CString str;
pDC->StartPage();
if(pInfo->m_nCurPage==1)
{
//打印标题
newFont.CreateFont(m_perCharHeight*2,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,"宋体");
pOldFont=(CFont*)pDC->SelectObject(&newFont);
rc=pInfo->m_rectDraw;
rc.top=m_perlineHeight*4;
rc.bottom=m_perlineHeight*6;
pDC->DrawText(strTitleArray[0],&rc,DT_CENTER);
pDC->SelectObject(pOldFont);
newFont.DeleteObject();
}
if(pInfo->m_nCurPage==1)
{
m_nStartRecord=1;
m_nEndRecord=m_linesPerPage-11;
if(m_nEndRecord>m_list1.GetItemCount())
m_nEndRecord=m_list1.GetItemCount();
DrawGrid(pDC,m_perlineHeight*6,m_nEndRecord-m_nStartRecord+1+1);
DrawTexttoGrid(pDC,m_perlineHeight*6,m_nStartRecord,m_nEndRecord);
}
else
{
m_nStartRecord=m_linesPerPage-11+(pInfo->m_nCurPage-2)*(m_linesPerPage-9)+1;
m_nEndRecord=m_nStartRecord+m_linesPerPage-9;
if(m_nEndRecord>m_list1.GetItemCount())
m_nEndRecord=m_list1.GetItemCount();
DrawGrid(pDC,m_perlineHeight*4,m_nEndRecord-m_nStartRecord+1+1);
DrawTexttoGrid(pDC,m_perlineHeight*4,m_nStartRecord,m_nEndRecord);
}
//打印页码
newFont.CreateFont((int)(m_perCharHeight*0.7),0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,"宋体");
pOldFont=(CFont*)pDC->SelectObject(&newFont);
str.Format("-第%d页-",pInfo->m_nCurPage);
pDC->TextOut(m_paperWidth-m_perlineHeight*6,(m_paperHeight-m_perlineHeight*4),str);
pDC->SelectObject(pOldFont);
newFont.DeleteObject();
}
void CViewDutyInfo::OnButton1() //查询
{
// TODO: Add your control notification handler code here
CString str;
int ntotalItem;
CTime time;
UpdateData(TRUE);
if(m_modectl.GetCurSel()==0)//按时间查询
{
if(m_edit1==""||m_edit2=="")
{
MessageBox("没有正确地输入查询条件!请重新输入","提示信息");
return;
}
m_table.m_strSort=_T("[dutytime]");
// m_table.m_strFilter=_T("[dutytime] Between '" + m_edit1 + "' AND '" + m_edit2+"'");
m_table.m_strFilter=_T("[dutytime] Between #" + m_edit1 + "# AND #" + m_edit2+"#");
if(m_table.Requery())
{
m_list1.DeleteAllItems();
while(!m_table.IsEOF())
{
ntotalItem = m_list1.GetItemCount();
m_list1.InsertItem(ntotalItem,m_table.m_Name);
time=m_table.m_dutytime;
if(time==0) str="";
else str=time.Format("%Y-%m-%d %H:%M:%S");
m_list1.SetItem(ntotalItem,1,LVIF_TEXT,_T(str),0,0,0,NULL);
time=m_table.m_lefttime;
if(time==0) str="";
else str=time.Format("%Y-%m-%d %H:%M:%S");
m_list1.SetItem(ntotalItem,2,LVIF_TEXT,_T(str),0,0,0,NULL);
m_list1.SetItem(ntotalItem,3,LVIF_TEXT,_T(m_table.m_dutyrecord),0,0,0,NULL);
m_table.MoveNext();
}
}
}
else
{
if(m_edit1=="")
{
MessageBox("没有正确地输入查询条件!请重新输入","提示信息");
return;
}
m_table.m_strSort=_T("[dutytime]");
m_table.m_strFilter=_T("[Name] = '" + m_edit1 + "'");
if(m_table.Requery())
{
m_list1.DeleteAllItems();
while(!m_table.IsEOF())
{
ntotalItem = m_list1.GetItemCount();
m_list1.InsertItem(ntotalItem,m_table.m_Name);
time=m_table.m_dutytime;
if(time==0) str="";
else str=time.Format("%Y-%m-%d %H:%M:%S");
m_list1.SetItem(ntotalItem,1,LVIF_TEXT,_T(str),0,0,0,NULL);
time=m_table.m_lefttime;
if(time==0) str="";
else str=time.Format("%Y-%m-%d %H:%M:%S");
m_list1.SetItem(ntotalItem,2,LVIF_TEXT,_T(str),0,0,0,NULL);
m_list1.SetItem(ntotalItem,3,LVIF_TEXT,_T(m_table.m_dutyrecord),0,0,0,NULL);
m_table.MoveNext();
}
}
}
}
void CViewDutyInfo::OnExport4()
{
// TODO: Add your control notification handler code here
if(!bHasExcelDriver())
{
MessageBox("没有安装Microsoft Excel Driver!","提示信息");
return;
}
CString strPathname;
CFileDialog filesavebox(FALSE,"xls",/*"default.xls"*/NULL,OFN_HIDEREADONLY/*|OFN_OVERWRITEPROMPT*/,"Excel文件(*.xls)|*.xls|",NULL);
if(filesavebox.DoModal()!=IDOK) return;
strPathname=filesavebox.GetPathName();
CDatabase database;
CString sDriver="Microsoft Excel Driver (*.xls)";
CString sSql;
CString str;
int i,nTotalItem,j;
TRY
{
sSql.Format("DRIVER={%s};DSN=;FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver,strPathname,strPathname);
if(database.OpenEx(sSql,CDatabase::noOdbcDialog))
{
sSql="CREATE TABLE 值班记录表 (用户名 TEXT,接班时间 TEXT,交班时间 TEXT,值班记录 TEXT)";
database.ExecuteSQL(sSql);
str="(用户名,接班时间,交班时间,值班记录)";
nTotalItem=m_list1.GetItemCount();
for(i=0;i<nTotalItem;i++)
{
sSql="INSERT INTO 值班记录表 ";
sSql+=str;
sSql+=" VALUES(";
for(j=0;j<4;j++)
{
sSql+="'";
sSql+=m_list1.GetItemText(i,j);
if(j<3)
sSql+="',";
else
sSql+="'";
}
sSql+=")";
database.ExecuteSQL(sSql);
}
}
database.Close();
}
CATCH_ALL(e)
{
TRACE0("%s","不能对表重新写入!");
}
END_CATCH_ALL;
}
BOOL CViewDutyInfo::bHasExcelDriver()
{
char szBuf[2001];
WORD cbBufMax=2000;
WORD cbBufOut;
char* pszBuf=szBuf;
CString sDriver;
if(!SQLGetInstalledDrivers(szBuf,cbBufMax,&cbBufOut)) return FALSE;
do
{
if(strstr(pszBuf,"Excel")!=0)
return TRUE;
pszBuf=strchr(pszBuf,'\0')+1;
}
while(pszBuf[0]!='\0');
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -