我实现了一个Windows窗体,单击一个按钮就可以打印一个带有CrystalReportViewer的报表。 我在Visual Studio 2017中开发它,在我的机器上安装了CR运行时32和64位。
这是我的代码:
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.ReportSource;
using CrystalDecisions.Shared;
..............
..............
ConnectionInfo crconnectioninfo = new ConnectionInfo();
ReportDocument cryrpt = new ReportDocument();
TableLogOnInfos crtablelogoninfos = new TableLogOnInfos();
TableLogOnInfo crtablelogoninfo = new TableLogOnInfo();
string path = "my//report//path.rpt";
cryrpt.Load(path);
Tables CrTables;
crconnectioninfo.ServerName = "MyServerName";
crconnectioninfo.DatabaseName = "MyDatabaseName";
crconnectioninfo.UserID = "MyUserName";
crconnectioninfo.Password = "MyPassword";
CrTables = cryrpt.Database.Tables;
foreach (Table crtable in CrTables)
{
crtablelogoninfo = crtable.LogOnInfo;
crtablelogoninfo.ConnectionInfo = crconnectioninfo;
crtable.ApplyLogOnInfo(crtablelogoninfo);
}
crystalReportViewer1.ReportSource = cryrpt;
它可以在我的机器和其他一些机器上正常工作。
当我在发布模式下构建它,并将应用程序安装到另一台机器上时,有人工作,而其他人没有。错误是报表无法连接到数据库。
我试图ping服务器,没关系。
以下是异常的堆栈跟踪:
Stack Trace: in CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.GetLastPageNumber(RequestContext pRequestContext)
in CrystalDecisions.ReportSource.EromReportSourceBase.GetLastPageNumber(ReportPageRequestContext reqContext)
Inner Source: rptcontrollers.dll
HResult: 2147217393
在所有机器上都安装了CRRuntime(和我一样!)。 也许我想念一些依赖,但不知道。
我注意到它在没有安装Visual Studio的计算机上不起作用。但我无法在所有PC上安装Visual Studio。
我无法在网上找到类似的问题。 任何帮助将不胜感激。
提前致谢。
答案 0 :(得分:0)
Crystal Report使用sql连接sdk连接到数据库。
这些是要安装以使连接正常工作的功能:
客户端工具连接
客户端工具向后兼容性
客户端工具SDK
管理工具 - 基本
管理工具 - 完成
SQL客户端连接SDK
下载页面here
希望这有帮助!
答案 1 :(得分:0)
与工作计算机相比,检查非工作计算机是否缺少任何Microsoft Visual C ++ Redistributables。我附上了运行使用Crystal Viewer的示例应用程序的Procmon跟踪的屏幕截图。跟踪显示调用C ++可再发行组件。如果不是这样,请尝试运行Procmon以查看是否缺少任何依赖项。