各位大侠:小弟第一次用Crystal Report 10 做报表。现我有一个Recordset查询结果,需要打印。请问如何把这个结果传递到报表中打印出来。

解决方案 »

  1.   


    Public Sub PrintReport(ByVal strSheetId As String, ByVal strRoomName As String, Optional isPreview As Boolean = False)
         
        Dim prn As New crDrugApp   
        Dim strSql As String
        Dim rsPrn As New ADODB.Recordset    
        On Error GoTo ErrHandler
        
        Me.MousePointer = 11
        
        
        strSql = "select * from vwPrnKfDrugApp where Apply_ID='" & strSheetId & "'"
        Set rsPrn = db.Execute(strSql)    With prn
            .Database.SetDataSource rsPrn
            .lblHospital.Font.Size = 12
            .lblHospital.HorAlignment = crHorCenterAlign
            .lblHospital.SetText pHospital & "vf" & "(" & strRoomName & ")"
            .lblPrnDate.SetText "sdf:" & Format(gInterfaceControl.SetProDate, "yyyy-mm-dd")
    '        .PaperOrientation = crPortrait
    '        .PaperSize = crPaperUser
    '        .SetUserPaperSize
        End With
        
        Me.MousePointer = 0
       
        If isPreview = False Then
            prn.PrintOut False
            Set prn = Nothing
            Set rsPrn = Nothing
            Exit Sub
        Else  
            frmReport.Viewer.ReportSource = prn
            frmReport.Viewer.ViewReport
            frmReport.Show 1
        End If    Set prn = Nothing
        Set rsPrn = Nothing
        Exit Sub
    ErrHandler:
        Me.MousePointer = 0
        Set prn = Nothing
        Set rsPrn = Nothing
       objErrLog.Record Err.Number, Err.Description, Me.Caption, "PrintReport", ""
    End Sub
      

  2.   

    With CR
            .Database.SetDataSource rs
    End With
    提示下标越界,无法通过。请问如何解决。
      

  3.   

    Dim pConn As New ADODB.Connection
     pConn.ConnectionString = "Provider=SQLOLEDB.1;persist security=False;Password=1234;User ID=sa;Initial Catalog=HKSales;Data Source=192.168.101.252"
     pConn.CursorLocation = adUseClient
     pConn.Open
     
     Dim CryApp As New CRAXDDRT.Application
     Dim tReport As New CRAXDDRT.Report
     Dim adoRS As New ADODB.Recordset
     Dim txtsql As String
     
     txtsql = "SELECT a.vpo_No,a.po_Date,a.requested_Date,a.Material_No,a.Desp,a.quantity,a.unit,a.unit_Price,a.currency,a.re,b.vendor_Name FROM purchase a LEFT JOIN vendor b ON a.vendor_No = b.vendor_No ORDER BY a.material_No"
     adoRS.Open txtsql, pConn, adOpenDynamic, adLockBatchOptimistic
     Set tReport = CryApp.OpenReport(App.Path & "\purchaseorder.rpt", 1)
     tReport.Database.SetDataSource adoRS   
     tReport.ReadRecords     
     Screen.MousePointer = vbHourglass
     CRViewer91.ReportSource = tReport
     CRViewer91.ViewReport
     Screen.MousePointer = vbDefault请大虾帮我看看. 
    当程序运行到: tReport.Database.SetDataSource adoRS   时就出错,提示: "0X3b06aebb" 指令引用的"0X046879e4"内存.该内存不能为"read",要终止程序,请单击"确定"
    这是什么原因呢?
      

  4.   

    你里面有个字段(ttx文件)的宽度不够有可能是日期字段,你把数据类型改为string   30  试下
      

  5.   

    With CR
            .Database.SetDataSource rs
    End With
    提示下标越界,无法通过。请问如何解决。//已经解决。
    //另:我在报表设计界面,从DataBase Fields中的某个a表拉出一个A字段放在报表Details中。可以打印;
    假设我有不同的表中不同的字段需要打印,是不是要象a表A字段一样,一个一个拉出来。能否自行设定?  
      

  6.   

    printsheet打印控件不错,又简单,功能又超强
    免费下载 www.aprintsoft.com
    客户服务也不错
      

  7.   

    loverpyh(龙行天下) 给你的不是crystal而是datareport...无语。题目都不看清楚当程序运行到: tReport.Database.SetDataSource adoRS   时就出错,提示: "0X3b06aebb" 指令引用的"0X046879e4"内存.该内存不能为"read",要终止程序,请单击"确定"//我好象回过你的问题???!!!我也不记得了哦
    //好象是因为你按了2个版本的crystal?
      

  8.   

    我在报表设计界面,从DataBase Fields中的某个a表拉出一个A字段或多个字段放在报表Details中。可以打印;
    假设我有不同表中不同的字段需要打印,是不是要象a表A字段一样,b表B字段一个一个拉出来。能否在报表设计界面放字段,然后再在程序中自行设定该字段显示的值?跟DataReport和ActiveReport一样。
    没有人能帮我这个问题吗?
      

  9.   

    自由界面和报表的完美解决方案!
    http://www.anylib.com