1

我有一个使用水晶报表 8.5 和 sql server 2005 的 vb6 应用程序。我的问题是,当我打印报表时,我得到服务器尚未打开。这是我在 vb 中的代码:

Option Explicit
Dim ctr As Integer 
Dim cn As New ADODB.Connection--Provider=SQLOLEDB.1;Password=password;Persist Security Info=True;User ID=user ID;Initial Catalog=database Name;Data Source=server Name
Dim crApp As CRAXDRT.Application
Dim crReport As CRAXDRT.Report
Dim crtable As CRAXDRT.DatabaseTable

Private Sub prin_Click()
  Dim rs As New ADODB.Recordset
  Set cn = New ADODB.Connection
  cn.ConnectionString = MDI1.txtado
  cn.Open
  Set rs = New ADODB.Recordset
  rs.Open "select * from temp_abs_yes", cn, adOpenKeyset, adLockOptimistic
  Set crApp = New CRAXDRT.Application
  Set crReport = crApp.OpenReport("C:\Users\user1.dom\Desktop\ANP\abs_yes.rpt")
  crReport.Database.Tables.Item(1).SetLogOnInfo "servername", "databasename", "user", "password"
  crReport.Database.Tables.Item(1).SetDataSource rs, 3
  crReport.DiscardSavedData
  Viewer.ReportSource = crReport
  Viewer.ViewReport
  rs.close
  Set rs = Nothing
  Set crReport = Nothing
  Set crApp = Nothing
End Sub
4

2 回答 2

0

我认为在这种情况下执行“SetLogOnInfo”是不必要的,因为您正在分配要报告的数据

可能不是你的情况,而是为了别人的帮助。

当我错误地分配了 servername 参数时,我得到了这个错误。

我用于登录的正确参数(对于 oracle DB):

[...]Item(1).SetLogOnInfo " [tnsnames] ", "", " [db user] ", " [db password] "

于 2011-05-05T22:32:35.477 回答
0

我通过更新dll解决了

p2soledb.dll

在 c:\Windows\Crystal我从这里得到了详细信息

于 2018-03-14T05:05:11.923 回答