2

我正在使用以下代码加载水晶报告。

 ConnectionInfo crconnectioninfo = new ConnectionInfo();
        ReportDocument cryrpt = new ReportDocument();
        TableLogOnInfos crtablelogoninfos = new TableLogOnInfos();
        TableLogOnInfo crtablelogoninfo = new TableLogOnInfo();

        Tables CrTables;

        crconnectioninfo.ServerName = "localhost";
        crconnectioninfo.DatabaseName = "dbclients";
        crconnectioninfo.UserID = "ssssssss";
        crconnectioninfo.Password = "xxxxxxx";  


      cryrpt.Load(Application.StartupPath + "\\rpts\\" + dealerInfo.ResourceName);

            CrTables = cryrpt.Database.Tables;

            foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
            {
                crtablelogoninfo = CrTable.LogOnInfo;
                crtablelogoninfo.ConnectionInfo = crconnectioninfo;
                CrTable.ApplyLogOnInfo(crtablelogoninfo);
            }


            cryrpt.RecordSelectionFormula = getCustInfoRptSelection();
            cryrpt.Refresh();

            allReportViewer.ReportSource = cryrpt;

getCustInfoRptSelection() 正在获取特定客户,但报告第一次显示所有客户,当我关闭报告并再次打开它时,它显示正确的记录。所以基本上我必须打开报告两次才能获得正确的数据,尽管 getCustInfoRptSelection() 结果没有改变。

在这种情况下, RecordSelectionFormula =" {dealer.dealer_type_id}=2 和 {dealer.DEALER_NAME} 就像' Mark Stall X '"

4

2 回答 2

3

我遇到了完全相同的问题,我在一个有效的 SAP 网站上找到了这个答案

  1. 展开Form1.vb|cs以显示Form1.Designer.vb|cs并双击它以显示其代码

  2. 查找在方法crystalReportViewer1中设置初始属性的位置InitializeComponent

  3. 注释掉或删除以下两行:

    this.crystalReportViewer1.SelectionFormula = ""
    this.crystalReportViewer1.ViewTimeSelectionFormula = ""
    

显然这是在他们的一个较新的服务包中添加的东西,因为这个问题直到我升级了 .Net 的 Crystal Reports 框架之后才开始发生

于 2012-12-14T14:46:51.033 回答
1

这一个钉了它。找到包含 CrystalReportViewer 控件的 Windows 窗体。

通常,您的 Windows 窗体具有 Resx 文件和设计器文件

例子: 在此处输入图像描述

打开设计器文件:

删除以下两行:

在此处输入图像描述

我认为这是一个错误。我正在使用 VS2015 VB.NET。

有效!

于 2021-05-17T08:02:52.437 回答