登录失败,Crystal Reports 9、VB6、sql server、sqlncli

登录失败,Crystal Reports 9、VB6、sql server、sqlncli,vb6,crystal-reports,odbc,sqlncli,Vb6,Crystal Reports,Odbc,Sqlncli,我正在尝试为旧版vb6软件构建一个安装程序包。软件本身通过sqlncli(本机客户端)连接到sql server。我已经打包了所有依赖项,并将它们部署到运行winxp和office2003的新机器上 现在,我可以从目标机器连接到使用tcp/ip在其他地方运行的数据库(MSSQLServer2005)。遗留软件与数据库的连接很好,我可以处理数据。但当我试图打开crystal report时,事情变得一团糟: 我收到一个错误,上面写着“运行时错误”-2147189176(80047e48):登录失败

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

现在,我可以从目标机器连接到使用tcp/ip在其他地方运行的数据库(MSSQLServer2005)。遗留软件与数据库的连接很好,我可以处理数据。但当我试图打开crystal report时,事情变得一团糟:

我收到一个错误,上面写着“运行时错误”-2147189176(80047e48):登录失败。 详细信息:01000:[Microsoft][ODBC SQL Server驱动程序][DBNETLIB]连接打开(Connect())”

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

  For i= 1 To numTables
    Set crTable = crTables.Item(i)
    crTable.SetLogOnInfo dbServer, dbName, dbLogin, dbPasswd
  Next
ConnectBufferString读取“连接字符串=驱动程序=SQL Server;;用户ID=用户;;密码=;;数据库=MY_DB;;服务器=192.168.1.3\SQLEXPRESS;;UseDSNProperties=-1”

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

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

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

我知道你在评论中说你已经解决了这个问题,但我想我还是把它扔出去。

你可以尝试使用

Provider = SQLNCLI
而不是

DRIVER = SQL Server
看看这是否有区别

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


希望这能有所帮助。

我知道你在评论中说你已经了解了这一点,但我想我会把它扔出去。:)

你可以尝试使用

Provider = SQLNCLI
而不是

DRIVER = SQL Server
看看这是否有区别

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


希望这有帮助。

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

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

这不是为什么不起作用的答案,但使用此注释中的代码,我可以找到解决方法:这不是为什么不起作用的答案,但使用此注释中的代码,我可以找到解决方法: