我正在尝试为一个遗留的vb6软件构建一个安装包。软件本身通过sqlncli (本机客户端)连接到sql server。我已经打包了所有依赖项,并将它们部署到一台运行winxp和office2003的新机器上。
现在,我可以从目标机器使用tcp/ip连接到在其他地方运行的数据库(ms Sqlserver2005)。遗留软件可以很好地连接到数据库,我可以操作数据。但是当我试图打开一个水晶报表时,事情变得混乱起来:
我收到一个错误,说“运行时错误'-2147189176(80047e48):登录失败。详细信息: 01000:MicrosoftDBNETLIBConnectionOpen (Connect())”
由于这些报告是在不同的系统、不同的数据库上设计的,所以...在调用报表之前会有一个重置每个表的db-information的循环:
For i= 1 To numTables
Set crTable = crTables.Item(i)
crTable.SetLogOnInfo dbServer, dbName, dbLogin, dbPasswd
Next服务器显示为"Connection String=DRIVER=SQL ConnectBufferString;;User ID=user;;Password=;;Database=MY_DB;;Server=192.168.1.3\SQLEXPRESS;;UseDSNProperties=-1“”
似乎没有一种方法可以显式地将提供程序设置为SQLNCLI,至少我看不到这样的方法。
当在我的dev-system上运行软件时,一切都像它应该的那样工作。
我希望你们能帮我解决这个问题。这样我们就不必争论这一点:我也认为这两种技术(vb6和cr9)都过时了,但在这里切换不是一个选择。
发布于 2009-09-17 14:40:21
我知道你在你的评论中说你已经解决了这个问题,但我想我还是把它抛出去吧。:)
您可以尝试使用
Provider = SQLNCLI而不是,
DRIVER = SQL Server看看这是否会有所不同。
请看下面的链接。向下滚动页面,直到看到"SQL Native Client 9.0 OLE DB provider“部分。它们显示了使用SQL Server Native Client的连接字符串的示例。
http://www.connectionstrings.com/sql-server-2005
希望这能有所帮助。
发布于 2014-09-15 21:39:24
您需要擦除表并更改对数据库的访问配置,请参见下面的示例。在第一行代码中,我在必要时提供了一个更改连接驱动程序的示例,在我的示例中,报告指向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
Nexthttps://stackoverflow.com/questions/1406408
复制相似问题