2

我正在尝试为旧版 vb6 软件构建安装包。软件本身通过 sqlncli(本机客户端)连接到 sql 服务器。我已经打包了所有依赖项并将它们部署到运行winxp和office2003的新机器上。

现在,我可以从目标机器连接到使用 tcp/ip 在其他地方运行的数据库(ms sqlserver 2005)。旧版软件可以很好地连接到数据库,我可以操作数据。但是当我尝试打开水晶报告时,事情变得一团糟:

我收到一条错误消息,提示“运行时错误 '-2147189176(80047e48):登录失败。详细信息:01000:[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect())”

因为报告是在不同的系统、不同的数据库上设计的,所以在调用报告之前有一个循环会重置每个表的数据库信息:

  For i= 1 To numTables
    Set crTable = crTables.Item(i)
    crTable.SetLogOnInfo dbServer, dbName, dbLogin, dbPasswd
  Next

ConnectBufferString 读取“连接字符串=DRIVER=SQL Server;;用户 ID=用户;;密码=;;数据库=MY_DB;;服务器=192.168.1.3\SQLEXPRESS;;UseDSNProperties=-1”

似乎没有办法将提供程序显式设置为 SQLNCLI,至少我没有看到任何内容。

在我的开发系统上运行软件时,一切都按预期运行。

我希望你们能帮我解决这个问题。这样我们就不必为此争论了:我也认为这两种技术(vb6 和 cr9)都已经过时了,但是在这里切换不是一种选择。

4

2 回答 2

0

我知道你在评论中说你已经解决了这个问题,但我想我会把它扔在那里。:)

您可以尝试使用

Provider = SQLNCLI

代替,

DRIVER = SQL Server

看看这是否有所作为。

看看下面的链接。在页面上向下滚动,直到看到“SQL Native Client 9.0 OLE DB 提供程序”部分。它们显示了使用 SQL Server Native Client 的连接字符串示例。

http://www.connectionstrings.com/sql-server-2005

希望这可以帮助。

于 2009-09-17T14:40:21.400 回答
0

您需要擦除表并更改对数据库的访问配置,请参见下面的示例。在第一行代码中,如果需要更改连接驱动程序,我会举一个示例,在我的情况下,报告指向 PostgreSQL 数据库,并且 programativamente 需要更改才能连接到 SQL SERVER。

myReportObject.Database.Tables(1).DllName = "crdb_ado.dll"       'Connect to SQL with OLEDB
For Index = 1 To myReportObject.Database.Tables.Count
    With myReportObject.Database.Tables(Index)

        .ConnectionProperties.DeleteAll

         .ConnectionProperties.Add "Provider", "SQLOLEDB"
         .ConnectionProperties.Add "Data Source", mySqlIP
         .ConnectionProperties.Add "Initial Catalog", myDB
         .ConnectionProperties.Add "User ID", usr_id
         .ConnectionProperties.Add "Password", pass
         .ConnectionProperties.Add "Integrated Security", 0

    End With
Next
于 2014-09-15T13:39:24.417 回答