各位尊敬的大峡: 紧急求助: 在VC里,请问做报表怎么做的?能够打印的功能。专业一点的。从数据库里查询的数据项,要做成报表哦,
pDC->SetMapMode(MM_TWIPS);
LOGFONT logFont[2];
logFont[0].lfHeight=460;
logFont[0].lfWidth=0;
logFont[0].lfEscapement=0;
logFont[0].lfOrientation=0;
logFont[0].lfWeight=FW_NORMAL;
logFont[0].lfItalic=0;
logFont[0].lfUnderline=0;
logFont[0].lfStrikeOut=0;
logFont[0].lfCharSet=ANSI_CHARSET;
logFont[0].lfOutPrecision=OUT_DEFAULT_PRECIS;
logFont[0].lfClipPrecision=CLIP_DEFAULT_PRECIS;
logFont[0].lfQuality=PROOF_QUALITY;
logFont[0].lfPitchAndFamily=VARIABLE_PITCH|FF_ROMAN;
strcpy(logFont[0].lfFaceName,"Times New Roman");
logFont[1].lfHeight=360;
logFont[1].lfWidth=0;
logFont[1].lfEscapement=0;
logFont[1].lfOrientation=0;
logFont[1].lfWeight=FW_NORMAL;
logFont[1].lfItalic=0;
logFont[1].lfUnderline=0;
logFont[1].lfStrikeOut=0;
logFont[1].lfCharSet=ANSI_CHARSET;
logFont[1].lfClipPrecision=CLIP_DEFAULT_PRECIS;
logFont[1].lfQuality=PROOF_QUALITY;
logFont[1].lfPitchAndFamily=VARIABLE_PITCH|FF_ROMAN;
strcpy(logFont[0].lfFaceName,"Times New Roman");
CFont font[2];
font[0].CreateFontIndirect(&logFont[0]);
font[1].CreateFontIndirect(&logFont[1]);
CFont *oldFont=pDC->SelectObject(&font[0]);
int vs1,vs2,vs3,vs4,vs;
int hs;
int rw1,rw2,rw3;
int mlh;
int loopn;
vs1=-900;
vs2=-600;
vs3=-400;
vs4=-800;
hs=1500;
rw1=1300;
rw2=1300;
rw3=1300;
RECT Rect0,Rect[7];
Rect0.left=hs;
Rect0.right=Rect0.left+rw1*2+rw2*4+rw3;
Rect0.top=vs1;
Rect0.bottom=Rect0.top+vs2;
Rect[0].left=hs;
Rect[0].right=Rect[0].left+rw1;
Rect[0].top=Rect0.bottom+vs3;
Rect[0].bottom=Rect[0].top+vs4;
Rect[1].left=Rect[0].right;
Rect[1].right=Rect[1].left+rw1;
Rect[1].top=Rect[0].top;
Rect[1].bottom=Rect[0].bottom;
Rect[2].left=Rect[1].right;
Rect[2].right=Rect[2].left+rw2;
Rect[2].top=Rect[0].top;
Rect[2].bottom=Rect[0].bottom;
Rect[3].left=Rect[2].right;
Rect[3].right=Rect[3].left+rw2;
Rect[3].top=Rect[0].top;
Rect[3].bottom=Rect[0].bottom;
Rect[4].left=Rect[3].right;
Rect[4].right=Rect[4].left+rw2;
Rect[4].top=Rect[0].top;
Rect[4].bottom=Rect[0].bottom;
Rect[5].left=Rect[4].right;
Rect[5].right=Rect[5].left+rw2;
Rect[5].top=Rect[0].top;
Rect[5].bottom=Rect[0].bottom;
Rect[6].left=Rect[5].right;
Rect[6].right=Rect[6].left+rw3;
Rect[6].top=Rect[0].top;
Rect[6].bottom=Rect[0].bottom;
UINT nFormat1,nFormat2;
nFormat1=DT_CENTER;
nFormat2=DT_CENTER|DT_WORDBREAK;
CString Tittle,fth[7];
Tittle="某地区国有企事业单位专业技术人员数构成表";
fth[0]="年份";
fth[1]="合计";
fth[2]="工程技术人员";
fth[3]="农业技术人员";
fth[4]="卫生技术人员";
fth[5]="科学研究人员";
fth[6]="教学人员";
pDC->DrawText(Tittle,-1,&Rect0,nFormat1);
pDC->SelectObject(&font[1]);
vs=Rect[0].top+160;
pDC->MoveTo(Rect[0].left,vs);
pDC->LineTo(Rect[6].right,vs);
loopn=0;
while (loopn<=6)
{
pDC->DrawText(fth[loopn],-1,&Rect[loopn],nFormat2);
loopn=loopn+1;
}
mlh=1000;
CString fs[7];
while (!pDoc->m_ExaSet.IsBOF()&&!pDoc->m_ExaSet.IsEOF())
{
vs=vs-mlh-100;
pDC->MoveTo(Rect[0].left,vs);
pDC->LineTo(Rect[6].right,vs);
fs[0].Format("%ld",pDoc->m_ExaSet.m_fy);
fs[1].Format("%ld",pDoc->m_ExaSet.m_f1+pDoc->m_ExaSet.m_f2+pDoc->m_ExaSet.m_f3+pDoc->m_ExaSet.m_f4+pDoc->m_ExaSet.m_f5);
fs[2].Format("%ld",pDoc->m_ExaSet.m_f1);
fs[3].Format("%ld",pDoc->m_ExaSet.m_f2);
fs[4].Format("%ld",pDoc->m_ExaSet.m_f3);
fs[5].Format("%ld",pDoc->m_ExaSet.m_f4);
fs[6].Format("%ld",pDoc->m_ExaSet.m_f5);
Rect[0].top=vs-80;
Rect[0].bottom=Rect[0].top+vs4;
Rect[1].top=Rect[0].top;
Rect[1].bottom=Rect[0].bottom;
Rect[2].top=Rect[0].top;
Rect[2].bottom=Rect[0].bottom;
Rect[3].top=Rect[0].top;
Rect[3].bottom=Rect[0].bottom;
Rect[4].top=Rect[0].top;
Rect[4].bottom=Rect[0].bottom;
Rect[5].top=Rect[0].top;
Rect[5].bottom=Rect[0].bottom;
Rect[6].top=Rect[0].top;
Rect[6].bottom=Rect[0].bottom;
mlh=0;
loopn=0;
while (loopn<=6)
{
fs[loopn].TrimRight();
if (fs[loopn].GetLength()==0)
fs[loopn]=" ";
if (fabs(pDC->DrawText(fs[loopn],&Rect[loopn],nFormat2))>=mlh)
mlh=int (fabs(pDC->DrawText(fs[loopn],&Rect[loopn],nFormat2)));
loopn=loopn+1;
}
pDoc->m_ExaSet.MoveNext();
}
vs=vs-mlh-100;
pDC->MoveTo(Rect[0].left,vs);
pDC->LineTo(Rect[6].right,vs);
loopn=0;
while (loopn<=5)
{
pDC->MoveTo(Rect[loopn].right-60,Rect0.bottom+vs3+160);
pDC->LineTo(Rect[loopn].right-60,vs);
loopn=loopn+1;
}
pDC->SelectObject(oldFont);