我在人事管理中想按部门或性别进行统计,然后打印输出,请问如何实现?

解决方案 »

  1.   

    select * from tablename group by 部门,性别
    然后输出到一些表格控件去。在www.vckbase.com中有一些范例
      

  2.   

    small_well:
              统计结果我已经做完了,(放在List Control中)剩下打印报表格式如何处理?(中国式的报表)
      

  3.   

    我没有用过List Control做打印的,这需要自己画,在www.vckbase.com应该有吧。我都是用第三方控件做报表的。如f1book
      

  4.   

    small_wei:
         请问您有第三方控件报表吗?有类似的范例吗,能否发一个过来:[email protected],谢谢!
      

  5.   

    www.codeproject.com扛鼎之作MFC GridCtrl
    当然,如果要做中国式报表,必须用清华Wangwei修订的可以合并单元格的版本
    也在那个站点上,相关例子也可在www.vckbase.com上找
      

  6.   

    http://www.codeproject.com/miscctrl/#Grid Control
      

  7.   

    ahphone:
        您好!
        能否给点原代码?让我看看您是如何写的,如果可以我马上结帐,谢谢![email protected]
      

  8.   

    同意 ahphone(阿丰) ,如果自己写报表的话,如果格式固定还好,如果不是的话会非常烦人的。DC里面的任何一个点都要自己算了位置在话上去,烦啊。
      

  9.   

    hjunxu:
        请问有其他的方法统计报表吗?
      

  10.   

    类似EXCEL的报表类库
    作者:supervip
    源代码:类似EXCEL的开发库
    http://www.vckbase.com/document/viewdoc.asp?id=761http://www.vckbase.com/code/downcode.asp?id=2022此代码是一个电子表格类库,还不是很完善,希望大家给多点意见和建议,我会尽快把相应功能丰富进去的。我的信箱:[email protected]
    现在这个sample不是很完整,我也正在完善中,相应的函数接口到时我会整理成一个文档发布给大家。声明:
    对于此代码中可能引用了其他网站上的一些技术,如果侵犯了相关作者的权益请尽快联系我,我会删除其中不合适部分。也请下载此代码的人尊重代码的原作者的意愿。若下载者要使用此代码请自行征求原作者的意见。1.12版本现支持单元格合并,文本对齐方式,字体,字体颜色,表格线定制,单元格读写权控制,列排序,动态增删行列,支持通过剪贴板同其他软件间的数据进行交互,支持单元格图形显示。可根据开发者需要进行二次开发,类库提供比较丰富的开发接口类函数,支持类似EXCEL的所见机所得的打印预览。在下一版本中作者还将加入单元格公式计算,数据库绑定,图表显示,支持HTML文件存储。
    以下为单元格公式解析的部分代码,大家感兴趣可以看一下!CString CGridCtrl::ParserExpression(CString strExpression) 

        CString strSign; //运算符 
        CString strRetu; 
        CString strTmp2; 
        CString strTmp3; 
     
        LPCSTR  lpstr; 
     
        char strTmp[200]; 
        long nTmp;//,nRetu; 
        long i,nLen,nStatus; 
        int nRow,nCol; 
        strExpression.MakeUpper(); 
        nLen = strExpression.GetLength(); 
        strSign = "+,-,*,/,(,)"; 
     
        strRetu = ""; 
        nStatus = 0 ; // 0 初始状态\遇到加减括号等符号  1 字母开始 2 数值开始 
        nTmp = -1; 
        memset(strTmp,0,200); 
        lpstr = strExpression; 
        for ( i=1; i=0 )||(i+1 >=nLen)) //是运算符号 
            { 
                if ((i+1 >= nLen)&&((strExpression.GetAt(i)>=''''0'''') &&  
                    (strExpression.GetAt(i)<=''''9''''))) 
                { 
                    nStatus = 2; 
                    nTmp++; 
                    strTmp[nTmp] = lpstr[i];//strExpression.GetAt(i); 
                } 
                if ((nStatus==2)&&(strExpression.GetAt(i)==''''('''')) nStatus=1; 
                if ( nStatus==1 )    //非单元格和正常计算数,直接拼串返回 
                { 
                    strTmp3 = ""; 
                    strTmp3.Format("%s",strTmp); 
                    strRetu = strRetu + strTmp3; 
                } 
                else if ( nStatus == 2)            //正常单元格对象或者数字 
                { 
                    //项 strRetu = strRetu + "<" + _T(strTmp) + ">"; 
                    if (!IsValidCol(strTmp)) 
                    { 
                        //return "#NAME!"; 
                        strTmp3 = ""; 
                        strTmp3.Format("%s",strTmp); 
                        strRetu = strRetu + "(" + strTmp3 + ")"; 
                    } 
                    else 
                    { 
                        nRow = 0; nCol = 0; 
    //                    strTmp = ParserCell() 递归 
    //                    MessageBox(strTmp,"ooo",1); 
                        strTmp2.Format("%s",strTmp); 
                        CCellID cell; 
                        if (ConvertStrToCellID(strTmp2,cell)) 
                        { 
        //                    MessageBox(strTmp,"ooo1111",1); 
                            strTmp3 = ParserCell(cell.row,cell.col); 
                            sprintf(strTmp,"%s",strTmp3.GetBuffer(strTmp3.GetLength())); 
                            strTmp3 = ""; 
                            strTmp3.Format("%s",strTmp); 
                            strRetu = strRetu + "(" + strTmp3 + ")"; 
                        } 
                        else 
                            return "#INVALID!"; 
                        //strRetu = strRetu + "<" + _T(strTmp) + ">"; 
        //                MessageBox(strTmp,"ooo2222",1); 
                    } 
                } 
     
                nStatus = 0; 
                nTmp = -1 ; 
                memset(strTmp,0,200); 
     
                if (!((i+1 >= nLen)&&((strExpression.GetAt(i)>=''''0'''') &&  
                    (strExpression.GetAt(i)<=''''9'''')))) 
                { 
                    strTmp3 = ""; 
                    strTmp3.Format("%c",lpstr[i]);//strExpression.GetAt(i)); 
                    strRetu = strRetu + strTmp3; 
                } 
            } 
            else if ((strExpression.GetAt(i)>=''''A'''') && (strExpression.GetAt(i)<=''''Z'''')) 
            { 
                nStatus = 1; 
                nTmp++; 
                strTmp[nTmp] = strExpression.GetAt(i); 
     
            } 
            else if ((strExpression.GetAt(i)>=''''0'''') && (strExpression.GetAt(i)<=''''9'''')) 
            { 
                nStatus = 2; 
                nTmp++; 
                strTmp[nTmp] = lpstr[i];//strExpression.GetAt(i); 
            } 
     
        } 
     
        return strRetu; 

    图像1:用类库做的样例