我打印的医院门诊发票中有一部分如下图所示,表里的数据都存在数据库,要求根据这些数据
统计这一天每个医生,以及医院的营业总额。
每张发票只对应某个医生一次所开药的情况(如:费用名称,费用金额,如下表)
并且,下表费用名称中所填向并不固定(如:手术费,治疗费,X光费.....)
我用的是datareport,不知用分组怎么实现
------------------------------------------
费用名称 | 费用金额 |费用名称 | 费用金额 |
------------------------------------------
         |          |         |          |
------------------------------------------
         |          |         |          |
------------------------------------------
-------------------------------------------------------------------------------------
统计表大致是这样的:
医生名 |手术费 |治疗费|.................|合计|
----------------------------------------------
                     .
                     .
                     .
合计   |       |      |.................|     |
-----------------------------------------------
目前只写了一点程序,然后就不知道该怎么办了!请高手指点,分不够再加!
Private Sub DataReport_Initialize()
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim Sql, strSql As String
'连接数据库(Access)
   Set cn = New ADODB.Connection
    With cn
        .Provider = "MSDataShape.1"     
        .Open "Data Provider=Microsoft.Jet.OLEDB.4.0 ;" & _
            "Data Source=" & App.Path & "\门诊.mdb;" & _
            "Persist Security Info=False"
    End With
   RptGroup.Sections("Section6").Controls("text1").DataField = "序号a"
    RptGroup.Sections("Section1").Controls("text2").DataField = "费用金额b1"
    RptGroup.Sections("Section1").Controls("text2").DataMember = "mi"
    Sql = "SELECT 费用金额b1,序号a FROM `成员` where Format(日期, 'yy/m/d')=Format(now, 'yy/m/d') "
    strSql = "SHAPE {" & Sql & " } " & _
        "AS mi COMPUTE mi,sum(mi.费用金额b1) as Total by 序号a "
    Set rs = New ADODB.Recordset
    rs.Open strSql, cn, adOpenStatic, adLockReadOnly
    Set Me.DataSource = rs
End Sub
 

解决方案 »

  1.   


    用VB建立EXCEL对象,通过代码调用EXCEL打印。
      

  2.   

    一直用datareport没用过水晶报表,不过可以试一试。
      

  3.   

    Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim Sql As String
        Dim strConn As String
        
    '连接数据库(Access)
        Set cn = New ADODB.Connection
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\jysf.mdb;Persist Security Info=False"
        cn.ConnectionString = strConn
        cn.Open
                    
        DataReport1.Sections("Section1").Controls("text1").DataField = "student.sclass"
        DataReport1.Sections("Section1").Controls("text2").DataField = "student.年"
        DataReport1.Sections("Section1").Controls("text3").DataField = " student.月"
    '打开记录集
        Set rs = New ADODB.Recordset
        Sql = "SELECT student.sclass, student.年, student.月, student.日, student.sname, student.sno, amounts.总额, amounts.学费, amounts.学杂费, amounts.住宿费, amounts.大写总额, amounts.学费代码, amounts.住宿费代码, amounts.收费单位代码, amounts.代管费, amounts.代管费总和, amounts.校服费, class.汉字班级 FROM amounts, student, class WHERE amounts.总额 = student.总额 AND student.sclass = class.sclass  AND student.sclass = '1'"
         '" & Chr(34) & Trim(DataList1.Text) & Chr(34) & "order by student.sclass"      'SQL语句可以用变量
        'Debug.Print Sql
        rs.Open Sql, cn, adOpenKeyset, adLockPessimistic
        
    '设置text控件属性
        
       
       Set DataReport1.DataSource = rs
        'Set DataReport2.DataSource = Form1.Adodc1
      cn.Close~~~~~~~~~~~~~~~~
    帮忙看一下!我是哪边设错了啊?提示datasource 不合法!!
      

  4.   

    这种打印不需要用datareport,自己做一段打印程序就可以了。