请问那位能否给我一个数据库查询后,报表打印的例子.谢谢

解决方案 »

  1.   

    就是怎样把查询后显示在:MSFlexGrid1中的记录,用报表显示出来.然后打印出来
      

  2.   

    没有时间帮你做个新的,自己将就着看吧,希望对你有帮助,这是我做过的一个工程中的打印'功能: 打印指定的内部使用出库清单
    '参数:sCoID-指定的内部使用出库单据的单据编号
    '      iFlag-库存类别标志,iFlag为0时,药品;iFlag为1时,材料。
    '返回值:F_PrintConsumeBill-打印成功,返回True;打印失败,返回False。
    Public Function F_PrintConsumeBill(ByVal sCoID As String, iFlag As Integer) As Boolean
        Dim i As Integer
        Dim rsConsume As New ADODB.Recordset
        
        F_PrintConsumeBill = False
        If sCoID = "" Then Exit Function
        
        On Error GoTo ErrConsumeBill
        If iFlag = 0 Then
            sSql = "Select * from vw_MedicineConsumeBill " _
                & "where 单据编码='" & sCoID & "'"
        Else
            sSql = "Select * from vw_MaterialConsumeBill " _
                & "where 单据编码='" & sCoID & "'"
        End If
        rsConsume.Open sSql, DB_Connection, adOpenKeyset, adLockReadOnly
        If (rsConsume.EOF Or rsConsume.BOF) Then
            MsgBox "没有您需要的相关信息,打印失败!", vbOKOnly + vbInformation, gCs_SysWarning
            rsConsume.Close: Set rsConsume = Nothing
            Exit Function
        End If
        
        With DRepExport
        If iFlag = 0 Then
            .Sections(1).Controls("LabSubTitle").Caption = "药品出库单"
            .Sections(2).Controls("Label11").Caption = "药 品 编 号"
        Else
            .Sections(1).Controls("LabSubTitle").Caption = "材料出库单"
            .Sections(2).Controls("Label11").Caption = "材 料 编 号"
        End If
        
        .Sections(1).Controls("LabUsage").Caption = rsConsume.Fields("用途")
        .Sections(1).Controls("LabDepartment").Caption = rsConsume.Fields("科室")
        .Sections(1).Controls("LabDate").Caption = Format(rsConsume.Fields("领取日期"), "yyyy年mm月dd日")
        .Sections(5).Controls("LabConfirm").Caption = rsConsume.Fields("主管审批")
        rsConsume.Close
        
        If iFlag = 0 Then
            sSql = "Select 国际编码,药品名称,规格,单位,出库数量,进价,金额,库存数量 " _
                & " from vw_MedicineConsumeDetail " _
                & " where 单据编码='" & sCoID & "'"
        Else
            sSql = "Select 国际编码,材料名称,规格,单位,出库数量,进价,金额,库存数量 " _
                & " from vw_MaterialConsumeDetail " _
                & " where 单据编码='" & sCoID & "'"
        End If
        rsConsume.Open sSql, DB_Connection, adOpenKeyset, adLockReadOnly
        If (rsConsume.EOF Or rsConsume.BOF) Then
            MsgBox "没有您需要的出库单明细!", vbOKOnly + vbInformation, gCs_SysWarning
            rsConsume.Close: Set rsConsume = Nothing
            Exit Function
        End If
        
        Set DRepExport.DataSource = rsConsume
            .Sections(3).Controls("TxtSum").DataField = "金额"
            .Sections(3).Controls("TxtType").DataField = "规格"
            .Sections(3).Controls("TxtID").DataField = "国际编码"
            If iFlag = 0 Then
                .Sections(3).Controls("TxtName").DataField = "药品名称"
            Else
                .Sections(3).Controls("TxtName").DataField = "材料名称"
            End If
            .Sections(3).Controls("TxtUnitName").DataField = "单位"
            .Sections(3).Controls("TxtLocate").DataField = "出库数量"
            .Sections(3).Controls("TxtPrice").DataField = "进价"
            .Sections(3).Controls("TxtStorage").DataField = "库存数量"
            .Sections(5).Controls("FunctionSum").DataField = "金额"
            i = .PrintReport(False, rptRangeAllPages)
        End With
        On Error GoTo 0
        
        F_PrintConsumeBill = True
        Exit Function
    ErrConsumeBill:
        MsgBox Err.Description & ",单据打印失败!", vbOKOnly + vbInformation, gCs_SysWarning
    End Function'功能: 打印指定的库存报损清单
    '参数:sDmgID-指定的库存报损单据的单据编号
    '      iFlag-库存类别标志,iFlag为0时,药品;iFlag为1时,材料。
    '返回值:F_PrintDamageBill-打印成功,返回True;打印失败,返回False。
    Public Function F_PrintDamageBill(ByVal sDmgID As String, iFlag As Integer) As Boolean
        Dim i As Integer
        Dim rsDamage As New ADODB.Recordset
        
        F_PrintDamageBill = False
        If sDmgID = "" Then Exit Function
        
        On Error GoTo ErrDamage
        If iFlag = 0 Then
            sSql = "Select 药品名称,批次进价,单位,残损数量,残损金额,残损原因,生成日期  " _
                & "from vw_MediDamage where 单据编码='" & sDmgID & "'"
            DRepReturn.Title = "药 品 报 损 单 据"
        Else
            sSql = "Select 材料名称,批次进价,单位,残损数量,残损金额,残损原因,生成日期  " _
                & "from vw_MateDamage where 单据编码='" & sDmgID & "'"
            DRepReturn.Title = "材 料 报 损 单 据"
        End If
        rsDamage.Open sSql, DB_Connection, adOpenKeyset, adLockReadOnly
        If Not (rsDamage.EOF Or rsDamage.BOF) Then
            With DRepReturn
                Set .DataSource = rsDamage
                If iFlag = 0 Then
                    .Sections(3).Controls("TxtName").DataField = "药品名称"
                Else
                    .Sections(3).Controls("TxtName").DataField = "材料名称"
                End If
                .Sections(3).Controls("TxtPrice").DataField = "批次进价"
                .Sections(3).Controls("TxtUnit").DataField = "单位"
                .Sections(3).Controls("TxtSum").DataField = "残损数量"
                .Sections(3).Controls("TxtAccount").DataField = "残损金额"
                .Sections(3).Controls("TxtMemo").DataField = "残损原因"
                .Sections(1).Controls("LabDate").Caption = Format(rsDamage.Fields("生成日期"), "yyyy年mm月dd日")
                .Sections(2).Controls("LabMemo").Caption = "残 损 原 因"
                i = .PrintReport(False, rptRangeAllPages)
            End With
        Else
            MsgBox "没有您需要的相关信息,打印失败!", vbOKOnly + vbInformation, gCs_SysWarning
        End If
        rsDamage.Close: Set rsDamage = Nothing
        On Error GoTo 0
        
        F_PrintDamageBill = True
        Exit Function
    ErrDamage:
        MsgBox Err.Description & ",单据打印失败!", vbOKOnly + vbInformation, gCs_SysWarning
    End Function'打印系统中的各项单据
    Private Sub MnuPrintBill_Click()
        If mS_CurNode = "" Then
            Exit Sub
        End If
        If lvwListView.ListItems.Count > 0 Then
            mS_CurKey = lvwListView.SelectedItem.Text
        Else
            Exit Sub
        End If
        Select Case Mid(mS_CurNode, 1, 2)
            Case "MB"       '药品单据
                Select Case Mid(mS_CurNode, 7, 2)
                    Case "NH"   '内部用药出库单据
                        Call F_PrintConsumeBill(mS_CurKey, 0)
                    Case "BS"   '报损单据
                        Call F_PrintDamageBill(mS_CurKey, 0)
                    Case "FY"   '返药单据
                        Call F_PrintReturnBill(mS_CurKey, 0)
                    Case "PD"   '盘点单据
                        Call F_PrintCheckBill(mS_CurKey, 0)
                    Case Else
                        MsgBox "改单据不能打印!", vbOKOnly + vbInformation, gCs_SysWarning
                End Select
            Case "WB"       '物资单据
                Select Case Mid(mS_CurNode, 7, 2)
                    Case "CK"   '出库单据
                        Call F_PrintConsumeBill(mS_CurKey, 1)
                    Case "BS"   '报损
                        Call F_PrintDamageBill(mS_CurKey, 1)
                    Case "FY"   '返货
                        Call F_PrintReturnBill(mS_CurKey, 1)
                    Case "PD"   '盘点单据
                        Call F_PrintCheckBill(mS_CurKey, 1)
                    Case Else
                        MsgBox "改单据不能打印!", vbOKOnly + vbInformation, gCs_SysWarning
                End Select
            Case Else
                MsgBox "改单据不能打印!", vbOKOnly + vbInformation, gCs_SysWarning
        End Select
    End Sub部分例子,其余的自己考虑一下!!!!!!