【问题标题】:Crystal reports - server and database水晶报表 - 服务器和数据库
【发布时间】:2013-11-11 14:30:13
【问题描述】:

我正在使用 Visual Studio 2010 + Sql Server 2008。

我正在尝试使用 CR 显示我的报告。当我尝试在本地计算机上使用该系统时,一切正常。

我使用存储过程来创建报告。

当我在另一台 PC 上部署系统时出现此问题。出现一条消息,要求:

服务器://检索原始服务器(本地)//不正确我需要获取客户端服务器 数据库://检索原始数据库(本地)//不正确我需要获取客户端数据库 用户名:我不使用任何用户,什么用户? 密码:我不用密码,什么密码?

我看到了另一种解决方案,但我找不到我必须在用户名或密码中使用的数据。我使用 Windows 身份验证登录到 sql..

谢谢。

问候。

编辑..这是我的代码..我不能使用参数,我没有收到任何错误。但系统无法识别我发送的参数...

Dim NuevoReporte 作为新的 CReportNotaPorUsuario 将 contenido 调暗为字符串 Dim ReportPath As String = My.Application.Info.DirectoryPath & "\CReportNotaPorUsuario.rpt"

        Dim ConexionCR As New CrystalDecisions.Shared.ConnectionInfo()
        contenido = Servicios.Funciones_Auxiliares.LeerArchivo(My.Application.Info.DirectoryPath & "\configuracion.txt")
        ConexionCR.ServerName = Servicios.Funciones_Auxiliares.TextoEntreMarcas(contenido, "<server>", "</server>")
        ConexionCR.DatabaseName = Servicios.Funciones_Auxiliares.TextoEntreMarcas(contenido, "<catalog>", "</catalog>")
        ConexionCR.IntegratedSecurity = True

        CrystalReportViewer1.ReportSource = ReportPath


        'NuevoReporte.SetParameterValue("@cod_usuario", cbousuario.SelectedValue)

        Dim field1 As ParameterField = Me.CrystalReportViewer1.ParameterFieldInfo(0)
        Dim val1 As New ParameterDiscreteValue()
        val1.Value = cbousuario.SelectedValue
        field1.CurrentValues.Add(val1)


        SetDBLogonForReport(ConexionCR)

【问题讨论】:

  • 另一台电脑上的用户帐号可能没有访问数据库的权限。
  • 但是.. 系统检索的服务器和数据库不正确,因为我得到了原始(旧)连接字符串。我需要获取实际的(客户端 PC)连接字符串。谢谢你的回答
  • 在您的问题中,您说它检索原始服务器和数据库,但要求提供您没有的用户名和密码。现在你是说它没有检索到正确的服务器和数据库?
  • 是的,对不起,如果我没有正确解释我的问题...它检索原始(但不正确)服务器,我需要获取客户端服务器。我还需要知道我需要在用户名和密码字段中使用哪些数据。
  • 所以你有两个不同的数据库?一个在开发端,一个在生产端。您必须确保在部署解决方案时指定生产服务器,而不是开发服务器。

标签: crystal-reports report connection-string


【解决方案1】:

您在开发和生产环境之间似乎有单独的服务器和数据库。您需要确保在部署 VS 解决方案时引用的是生产服务器和数据库,而不是开发服务器和数据库。 有一些教程可以帮助您找到实现这一目标的方法。签出:

http://msdn.microsoft.com/en-us/library/dd193254(v=vs.100).aspx

Visual Studio 2010 Database Project Deploy to Different Environments

http://www.asp.net/web-forms/tutorials/deployment/advanced-enterprise-web-deployment/customizing-database-deployments-for-multiple-environments

编辑:这似乎已经演变成与问题最初所述不同的问题。要从文本文件中动态获取 CR 的连接字符串,您必须首先读取文本文件并将服务器名称和数据库名称放入变量中。读取文本文件,您可以使用 string text = File.ReadAllText(@"C:\Folder\File.txt"); 之类的内容,但您需要将服务器名称和数据库名称提取到变量中。然后为了使用连接字符串中的变量,您使用ConnectionInfo.Servername = variable1;ConnectionInfo.DatabaseName = variable2

【讨论】:

  • 我的问题是解决方案将部署在“客户端”机器上,实际上这是一个大学项目。我不知道目标机器是哪台机器,我将执行脚本并使用您想要的用户名安装在用户想要的服务器上。用户在屏幕上输入服务器和数据库,并写入文本文件。系统读取文本文件并获取连接字符串。但不是针对报表,只针对系统,我需要获取水晶报表服务器和该文本文件的数据库名称
  • 然后您需要在连接字符串中使用变量,并且在运行报告时,连接字符串需要从文本文件中检索值。这与您在原始问题中所说的问题大不相同。
  • 我承认我没有以最好的方式解释。那么问题来了,如何更改使用水晶报表的连接字符串呢?尝试使用 connectioninfo.servername 失败...谢谢!
  • 查看我原始答案中的编辑。对如何读取文本文件并获取某些值进行一些研究。我不知道您的文件将如何构建。但是如果数据库和服务器的用户输入发生在您的项目中,您可以只使用文本框的值而不是通过文本文件进行解析。
  • 我可以检索两个值(服务器和数据库),但是当我运行解决方案时,会出现相同的错误...
猜你喜欢
  • 2010-10-28
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2016-04-28
  • 1970-01-01
相关资源
最近更新 更多