我是这样做的,可是打开的还是 “ulosscal” 这张表的所有内容Private Sub Command1_Click()
Form2.Show
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cnn.CursorLocation = adUseClient
Call ConnectionData ‘打开记录集rs.Open "select * from ulosscal where cname = '" & cobname.text &"' ", cnn, adOpenKeyset, adLockReadOnly  '这是打印的条件设置,可是好像不起做用哟。Dim cryApp As New CRAXDRT.Application
Dim Rpt As CRAXDRT.Report
Set Rpt = cryApp.OpenReport("d:\2\1.rpt")
Rpt.Database.SetDataSource rs
Form2.CRViewer1.Visible = True
Form2.CRViewer1.ReportSource = Rpt
Form2.CRViewer1.ViewReport
End SubPublic Sub ConnectionData()
  Dim SQLstr As String
  Set cnn = New ADODB.Connection
  SQLstr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=system"
  cnn.Open SQLstr '打通数据库
End Sub
这样打会打出全张表的记录,而非我要的记录,有没有解决的方法呢。给我指点一下,谢谢了。

解决方案 »

  1.   

    2个办法:1。在你生成Recordset时用SQl语句生成符合条件的记录集,如你所做的,但是生成新记录集后,要断开Crystal Report的源,然后重新设置(刷新报表源)2.你可以在Crystal Report中设计,创建1个参数字段,然后通过“记录选择专家”与该参数连接,然后在你的代码中调用水晶报表对象的Parameters集合
    这是网友给我的提示但本人太不懂了,哪位高手说明一点
      

  2.   

    1、在你生成Recordset时用SQl语句生成符合条件的记录集,如你所做的,但是生成新记录集后,要断开Crystal Report的源,然后重新设置(刷新报表源)
    就是说你在引用d:\2\1.rpt时要有个数据源吧,这里你预览的的1.rpt的数据源,而当你的rs数据与1.rpt的数据不同时,开始也只显示1.rpt的,只有你点一下刷新按钮才变为RS的,不知道这样说你明白吗?
      

  3.   

    点一下水晶报表浏览器(CRViewer1)上面的那个的刷新按钮啊,否则就自己做一个刷新按钮,不过我试过在程序里加上Rpt.refresh不起作用。如果加到按钮里就可以,不过那和水晶报表浏览器的那个刷新按钮一样。我也不知道还有什么好的方法。
      

  4.   

    TO LemonRain(柠檬雨)   如果用VB代码传送参数要如何实现呢?有没有这方面的代码   [email protected]
       这是我的邮箱谢谢了