如何在运行时在C#.net或之中将数据库登录信息传递给Crystal Report

2020-08-17 02:42发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试从Visual Studio 2013 CR版本1.3.0.2000.0的CR升级到版本= 13.0.4000.0。 在以前的版本中,我使用了以下代码:

VB.Net

导入CrystalDecisions.CrystalReports.Engine

导入CrystalDecisions.Shared

PartialClassCalendarRaffle_CalendarMailingLabels

继承System.Web.UI.Page

ProtectedSub Page_Load(ByVal发送者AsObject,ByVal e作为System.EventArgs)HandlesMe.Load

将报表作为新的ReportDocument()

report.Load(Server.MapPath(" CalendarWinerMailInfo.rpt"))

SetTableLocation(report.Database.Tables)

CrystalReportViewer1.ReportSource =报告

EndSub

PrivateSub SetTableLocation(ByVal表作为表)

将connectionInfo设置为New ConnectionInfo()

connectionInfo.ServerName ="我的服务器"

connectionInfo.DatabaseName ="我的数据库"

connectionInfo.UserID ="我的用户名"

connectionInfo.Password ="我的密码"

ForEach表作为表中的CrystalDecisions.CrystalReports.Engine.Table

将tableLogOnInfo设置为TableLogOnInfo = table.LogOnInfo

tableLogOnInfo.ConnectionInfo = connectionInfo

table.ApplyLogOnInfo(tableLogOnInfo)

下一步

EndSub

EndClass

效果很好。

但是,当我尝试将其转换为C#并在当前的Version = 13.0.4000.0中使用它时:

C#

使用系统;

使用CrystalDecisions.CrystalReports.Engine;

使用CrystalDecisions.Shared;

internalpartialclassHQadmin_CalendarMailingLabels:System.Web.UI.Page

{

公共HQadmin_CalendarMailingLabels()

{

this.Load + = Page_Load;

}

protectedvoid Page_Load(对象发送者,EventArgs e)

{

var report = newReportDocument();

report.Load(Server.MapPath(" CalendarWinerMailInfo.rpt")))

SetTableLocation(report.Database.Tables);

CrystalReportViewer1.ReportSource =报告;

}

privatevoid SetTableLocation(表格表格)

{

var connectionInfo = newConnectionInfo();

connectionInfo.ServerName ="我的服务器";

connectionInfo.DatabaseName ="我的数据库";

connectionInfo.UserID =" usernm";

connectionInfo.Password ="密码";

foreach(表格中的CrystalDecisions.CrystalReports.Engine.Table表)

{

TableLogOnInfo tableLogOnInfo = table.LogOnInfo;

tableLogOnInfo.ConnectionInfo = connectionInfo;

table.ApplyLogOnInfo(tableLogOnInfo);

}

}

}

它不起作用。 我找不到在当前版本中如何执行此操作的任何示例。 有人可以告诉我如何使它工作!!!! 另外,如果有当前版本的文档和代码示例,请告诉我在哪里可以找到它。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试从Visual Studio 2013 CR版本1.3.0.2000.0的CR升级到版本= 13.0.4000.0。 在以前的版本中,我使用了以下代码:

VB.Net

导入CrystalDecisions.CrystalReports.Engine

导入CrystalDecisions.Shared

PartialClassCalendarRaffle_CalendarMailingLabels

继承System.Web.UI.Page

ProtectedSub Page_Load(ByVal发送者AsObject,ByVal e作为System.EventArgs)HandlesMe.Load

将报表作为新的ReportDocument()

report.Load(Server.MapPath(" CalendarWinerMailInfo.rpt"))

SetTableLocation(report.Database.Tables)

CrystalReportViewer1.ReportSource =报告

EndSub

PrivateSub SetTableLocation(ByVal表作为表)

将connectionInfo设置为New ConnectionInfo()

connectionInfo.ServerName ="我的服务器"

connectionInfo.DatabaseName ="我的数据库"

connectionInfo.UserID ="我的用户名"

connectionInfo.Password ="我的密码"

ForEach表作为表中的CrystalDecisions.CrystalReports.Engine.Table

将tableLogOnInfo设置为TableLogOnInfo = table.LogOnInfo

tableLogOnInfo.ConnectionInfo = connectionInfo

table.ApplyLogOnInfo(tableLogOnInfo)

下一步

EndSub

EndClass

效果很好。

但是,当我尝试将其转换为C#并在当前的Version = 13.0.4000.0中使用它时:

C#

使用系统;

使用CrystalDecisions.CrystalReports.Engine;

使用CrystalDecisions.Shared;

internalpartialclassHQadmin_CalendarMailingLabels:System.Web.UI.Page

{

公共HQadmin_CalendarMailingLabels()

{

this.Load + = Page_Load;

}

protectedvoid Page_Load(对象发送者,EventArgs e)

{

var report = newReportDocument();

report.Load(Server.MapPath(" CalendarWinerMailInfo.rpt")))

SetTableLocation(report.Database.Tables);

CrystalReportViewer1.ReportSource =报告;

}

privatevoid SetTableLocation(表格表格)

{

var connectionInfo = newConnectionInfo();

connectionInfo.ServerName ="我的服务器";

connectionInfo.DatabaseName ="我的数据库";

connectionInfo.UserID =" usernm";

connectionInfo.Password ="密码";

foreach(表格中的CrystalDecisions.CrystalReports.Engine.Table表)

{

TableLogOnInfo tableLogOnInfo = table.LogOnInfo;

tableLogOnInfo.ConnectionInfo = connectionInfo;

table.ApplyLogOnInfo(tableLogOnInfo);

}

}

}

它不起作用。 我找不到在当前版本中如何执行此操作的任何示例。 有人可以告诉我如何使它工作!!!! 另外,如果有当前版本的文档和代码示例,请告诉我在哪里可以找到它。

付费偷看设置
发送
3条回答
spaceman01
1楼-- · 2020-08-17 02:52

您是否收到特定的错误消息? 如果是这样,请发布它。

自较早版本以来所做的一项更改是,如果这是一个网页,则需要将报告保留在Page_Init的会话变量中,而不是 Page_Load。

-Dell

蓋茨
2楼-- · 2020-08-17 03:02

在查看了Wiki之后,我发现的唯一代码示例是

的以下C#代码

" CrystalDecisions.CrystalReports.Engine,版本= 13.0.2000.0

使用System;
使用System.Data;
使用System.Configuration;
使用System.Web;
使用System.Web.Security;
使用System.Web.UI;
使用System.Web.UI.WebControls;
使用System.Web.UI.WebControls.WebParts;
使用System.Web.UI.HtmlControls;
使用CrystalDecisions.CrystalReports.Engine;
使用CrystalDecisions.Shared; 公共局部类Reports_PerCapitaSummaryRpt:System.Web.UI.Page
{
私有void ConfigureCrystalReports()
{
字符串reportPath = Server.MapPath(" percapitasummary.rpt"); ConnectionInfo connectionInfo =新的ConnectionInfo();

connectionInfo.ServerName =" 198.38.92.165";
connectionInfo.DatabaseName =" cwvusa_cwvaux";
connectionInfo.UserID =" cwvusa_pgkdave";
connectionInfo .Password =" kc11449";
CrystalReportViewer1.ReportSource = reportPath;
SetDBLogonForReport(connectionInfo);
}公共无效Page_Init(对象发送方,EventArgs e)
{
ConfigureCrystalReports(); < br>}
私有无效SetDBLogonForReport(ConnectionInfo connectionInfo)
{
TableLogOnInfos tableLogOnInfos = CrystalReportViewer1.LogOnInfo;
foreach(tableLogOnInfos中的TableLogOnInfo tableLogOnInfo)
{
tableLogOnInfo.ConnectionInfo = connectionInfo;
}
}

}
//public Reports_PerCapitaSummaryRpt()
//{
//this.Load + = Page_Load;
//}//受保护的无效Page_Load(对象发送者,EventArgs e)< br>//{
//var report = new ReportDocument();
//report.Load(Server.MapPath(" percapitasummary.rpt"));
//SetTableLocation(report.Database。 表);
//CrystalReportViewer1.ReportSource = report;
//}//私有void SetTableLocation(表表)
//{
//var connectionInfo = new ConnectionInfo();
//connectionInfo.ServerName ="我的服务器";
//connectionInfo.DatabaseName ="我的数据库";
//connectionInfo.UserID ="用户名";
//connectionInfo.Password ="密码 ";
//foreach(表格中的CrystalDecisions.CrystalReports.Engine.Table表)
//{
//TableLogOnInfo tableLogOnInfo = table.LogOnInfo;
//tableLogOnInfo.ConnectionInfo = connectionInfo; < br>//table.ApplyLogOnInfo(tableLogOnInfo);
//}
//}
//}

它运行但返回一个无错误的空白屏幕。 当前版本是

" CrystalDecisions.CrystalReports.Engine,版本= 13.0.4000.0,版本13.0.2000和版本13.0.4000之间发生了某些更改

hengyuye
3楼-- · 2020-08-17 03:15

唐·威廉姆斯(Don Williams),我对此主题的了解已有限。您能帮忙吗?

谢谢!

< p> -Dell

一周热门 更多>