环境:win2000 + vb6 + SQL Server
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.ConnectionString = "dsn=" & ReDsn & ";uid=" & ReUid & ";pwd=" & RePwd
cn.Open
rs.CursorLocation = adUseClient
sql = "select * from UserInfo"
rs.Open sql, cn, adOpenStatic, adLockOptimistic 
Rpt.DiscardSavedData                 
Rpt.Database.SetDataSource rs, 3 
CRViewer1.ReportSource = Rpt更改DSN名称重新配置数据源后,rs表中的数据都可以访问了,但运行后就会出现“Server has not yet been opened!”提示,没更换DSN之前一切都是正常的,请问程序中(非手动)要如何动态设置水晶报表的数据源呢?ODBC配置中已指定默认数据库,上述的cn还没有反应出水晶报表所需连接的数据库吗?

解决方案 »

  1.   

    你的报表是ttx类型的吗?试一下:
    CryPacking.Database.LogOnServer "pdsodbc.dll", ODBC数据源名, 数据库名, 用户名,密码
      

  2.   

    还是不行,一样的提示,ttx是什么类型啊,我太菜不明白啊,我的报表是先在水晶报表4.6下做好,再导到水晶报表8.0里面。
      

  3.   

    上面有位老兄已经说过了,你可以这样去实现:
    .Database.Tables(1).SetLogOnInfo ODBC数据源名, 数据库名, 用户名,密码
    .Database.LogOnServer "pdsodbc.dll", ODBC数据源名, 数据库名, 用户名,密码
    你可以用这种方式去设定,先获取当前数据源服务名,数据库名,用户名,密码再传入。就不会担心出现你说的问题了。我写Crstal Report,Orcal数据库就用这种方式实现的。
     
     
      

  4.   

    您的Crystal 8.0能给我一份吗?谢谢!
    我的Email:
    [email protected]
    [email protected]
      

  5.   

    这儿有8.0下载
    http://www.fast8.com/SoftView.Asp?SoftID=293
      

  6.   

    这儿有8.0下载
    http://www.fast8.com/SoftView.Asp?SoftID=293
      

  7.   

    问题已解决,谢谢afang98(小酷)和0211997(HI)的指点!