是这样的,我写了如下程序:  Dim cryat As CRAXDRT.Application
   Dim cry2 As CRAXDRT.Report
   Dim username As CRAXDRT.TextObject
   Dim jin As CRAXDRT.TextObject
   Dim sqlxuan As String
   Set cryat = New CRAXDRT.Application
   Set cry2 = cryat.OpenReport(App.Path & "\report1.rpt")
   cry2.DiscardSavedData
   sqlxuan = "{xsssmsandxszd.xh}='" & txtxh.Text & "'"
   sqlxuan = sqlxuan + " and {xsssmsandxszd.sfnf}='" & combosfnf.Text & "'"
   'sqlxuan = sqlxuan + " and {xsssmsandxszd.sjh}='" & txtsjh.Text & "'"
   cry2.RecordSelectionFormula = sqlxuan 
   frmview.CRViewer91.Refresh
   
   frmview.CRViewer91.ReportSource = cry2
   frmview.CRViewer91.ViewReport
   frmview.Show
         
  可是运行是不是数据不刷新就是登录sql失败,为什么?请指点迷经,谢谢。

解决方案 »

  1.   

    非常感谢sunruping朋友的帮助,我还想问一下,  .logonserver 语法中的 ".dll"文件是什么意思啊? :)
      

  2.   

    “.logonserver 语法中的 ".dll"文件是什么”————
    为:在VB中使用Crystal Report 当采用传SQL的方法(在运行报表的时候直接连接数据库,利用SQL语句进行查询资料的获取;注:另一种方法:VB中可以采用直接传递Recordset 的方式使用Crystal Report)时。在程序的执行过程中去访问当前数据库,也必须要一个访问连接的载体(比如我们使用ADO连接,会通过连接字符串来),其中“.DLL”就是访问数据库的中间载体,对不同的数据库,不同的CrystalReport版本,采用的DLL不一样。
    例如Orcal :pdsora7.dll 
      

  3.   

    建议你在
     cry2.DiscardSavedData 之后,打开一个与水晶报表结构相同的或者相像的记录集,并将报表绑定该记录集。Report.DiscardSavedData
    Report.Database.SetDataSource rs, 3
    Report.ReadRecords