登录失败,水晶报表9,VB6,SQL服务器,sqlncli

问题描述:

我想建立一个遗留的VB6软件的安装程序包。该软件本身通过sqlncli(本地客户端)连接到一个sql服务器。我打包了所有依赖关系,并将它们部署到运行winxp和office2003的新机器上。登录失败,水晶报表9,VB6,SQL服务器,sqlncli

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

我得到一个错误说“运行时错误“-2147189176(80047e48):登录失败 详细信息:01000:[微软] [ODBC SQL服务器驱动程序] [DBNETLIB] ConnectionOpen(连接())“

因为报告设计在不同的系统,不同的数据库和什么不... ...有一个循环之前调用报告,重置每个db-信息表:

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

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

似乎没有一种方法显式设置提供程序为SQLNCLI,至少我没有看到任何。

在我的开发系统上运行软件时,一切都像它应该的那样工作。

我希望你们能帮我解决这个问题。 只是所以我们不必为此争论:我也认为这些技术(vb6和cr9)都已过时,但切换不是这里的选项。

+0

这不是一个答案,为什么这是不行的,但使用代码此评论,我可以找到出路:http://*.com/questions/204611/crystal-report-datasource -remap/217756#217756 – BigBlackDog 2009-09-10 18:45:12

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

您可以尝试使用“Provider = SQLNCLI”而不是“DRIVER = SQL Server”来查看是否有所作为。

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

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

希望这有助于。

您需要擦除表并更改对数据库的访问配置,请参阅下面的示例。 在第一行代码中,如果需要更改连接驱动程序,我将举一个例子,在我的例子中,报告指向PostgreSQL数据库,并且程序需要更改以连接到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