每次在第二页上显示数据库登录提示

2020-08-17 18:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好 我遇到一个奇怪的问题,...

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

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


大家好

我遇到一个奇怪的问题,数据库登录提示仅出现在第二页(导航下一页)上。 我正在使用Visual Studio 2019社区版和Crystal Reports 13,更新27支持VS2019。 在针对表进行报告时,我没有这个特殊的问题,但是存储过程接受多个参数,并且过程中的选择引用了多个视图。 为了更容易理解:

  1. 我有两个数据库
  2. 生产和测试
  3. " sa"在两个数据库上都具有完全访问权限
  4. 在测试数据库上创建报告的视图/过程
  5. 在IDE中设计报告和进行审核时,我没有任何问题。 登录提示仅在调试和发布后出现。

该报告的调用方式如下

受保护的空白Page_Load(对象发送者,EventArgs e)
         {
             如果(!IsPostBack)
             {
                 ReportDocument reportDocument = new ReportDocument();
                 reportDocument.Load(Server.MapPath(@"〜/CrystalReport2.rpt"));
                 reportDocument.SetParameterValue(0,2020);
                 reportDocument.SetParameterValue(1,1);
                 reportDocument.SetParameterValue(2,3);
                 reportDocument.SetParameterValue(3," 1");
                 reportDocument.SetParameterValue(4," 1");

                 ConnectionInfo connectionInfo =新的ConnectionInfo
                 {
                     DatabaseName ="测试",
                     UserID =" sa",
                     密码="密码",
                     ServerName =" RAJESH-PC"
                 };

                 SetDBLogonForReport(connectionInfo,reportDocument);
                 CrystalReportViewer1.Visible = true;
                 CrystalReportViewer1.ReportSource = reportDocument;
             }
         } 

和SetDBLogonForReport方法如下:

私有无效SetDBLogonForReport(ConnectionInfo connectionInfo,ReportDocument rpt)
         {
             foreach(rpt.Subreports中的ReportDocument subRpt)
             {
                 foreach(subRpt.Database.Tables中的表crTable)
                 {
                     Response.Write(crTable.Name);
                     crTable.LogOnInfo.ConnectionInfo.AllowCustomConnection = true;
                     TableLogOnInfo logInfo = crTable.LogOnInfo;
                     logInfo.ConnectionInfo = connectionInfo;
                     尝试
                     {
                         crTable.ApplyLogOnInfo(logInfo);
                     }
                     抓住(前例外)
                     {
                         Response.Write(ex.Message);
                     }
                 }
             }

             foreach(rpt.Database.Tables中的表crTable)
             {
                 Response.Write(crTable.Name);
                 crTable.LogOnInfo.ConnectionInfo.AllowCustomConnection = true;
                 TableLogOnInfo loi = crTable.LogOnInfo;
                 loi.ConnectionInfo = connectionInfo;
                 尝试
                 {
                     crTable.ApplyLogOnInfo(loi);
                 }
                 抓住(前例外)
                 {
                     Response.Write(ex.Message);
                 }
             }
         } 

虽然在没有数据库登录提示的情况下执行单页报告,但经过2天的不懈努力寻找解决方案后,我有点完全迷失了。

致谢

rajesh

5条回答
愤怒的猪头君
2020-08-17 19:10

如果这是一个Web应用程序,则需要将报告存储在会话变量中。 过去在Crystal for VS Wiki上有一个有关如何执行此操作的说明的链接,但此链接当前不起作用。

Don Williams ,Wiki中指向知识库文章2007224的链接不起作用-是否有此版本的新版本?

-Dell

# p#

感谢 Dell Stinnett-Christy Don Williams 供您输入。 我发现回发导致报表提示输入数据库凭据,并设法将其提供给报表查看器,从而永久停止了行为。 这是我第一次在Visual Studio/Web应用程序中使用Crystal Reports,并且在此锁定期间,几乎没有其他技术支持站点的答复。

感谢您的时间和答复。

致谢

Rajesh

一周热门 更多>