代码之家  ›  专栏  ›  技术社区  ›  mattruma

如何将参数传递给Crystal Report for Visual Studio 2010?看起来他们被忽视了

  •  4
  • mattruma  · 技术社区  · 14 年前

    这在Visual Studio 2008中工作正常,但由于我已切换到Visual Studio 2010和crystalreportsforvisualstudio2010,因此忽略了传递的参数。

    它们显示在报表中,但在选择公式时被忽略!这是我创建报表和传递参数的代码。

     private void Prepare()
        {
            var reportDocument = new ReportDocument();
    
            string reportPath = string.Format(
                "{0}\\{1}",
                Globals.FormPath,
                this.FormTemplate.Filename);
    
            reportDocument.Load(reportPath);
    
            ParameterDiscreteValue parameter;
    
            foreach (var control in this.FormTemplateFieldControls)
            {
                switch (control.FormTemplateField.DataType)
                {
                    case FormFieldDataType.Date:
                        this.AddParameterForDateTime(
                            reportDocument,
                            control.FormTemplateField.Name,
                            (DateTime)control.EditValue);
                        break;
                    case FormFieldDataType.DateTime:
                        this.AddParameterForDateTime(
                            reportDocument,
                            control.FormTemplateField.Name,
                            (DateTime)control.EditValue);
                        break;
                    case FormFieldDataType.Time:
                        this.AddParameterForDateTime(
                            reportDocument,
                            control.FormTemplateField.Name,
                            (DateTime)control.EditValue);
                        break;
                    case FormFieldDataType.Guid:
                        this.AddParameterForGuid(
                            reportDocument,
                            control.FormTemplateField.Name,
                            (Guid)control.EditValue);
                        break;
                    default:
                        this.AddParameterForString(
                            reportDocument,
                            control.FormTemplateField.Name,
                            control.EditValue.ToString());
                        break;
                }
            }
    
            this.SetConnectionInfo(reportDocument);
    
            var frm = new FormViewer();
    
            frm.Report = reportDocument;
    
            frm.ShowDialog();
    
            frm.Dispose();
    
            this.Close();
        }
    

    当我从设计师那里运行报告时,它工作得很好。当我在报告中显示参数时,您可以看到参数正在传递。

    alt text

    对于从存储过程运行的报表,参数似乎传递得很好,只是由所有表组成的那些。

    值得一提的是,以下是我的选择公式:

     {employee.HireDate} >= {?StartDate} And {employee.HireDate} <= {?EndDate}
    
    2 回复  |  直到 9 年前
        1
  •  1
  •   mattruma    13 年前

    这已通过最新版本的Crystal Reports for Visual Studio 2010解决。

        2
  •  0
  •   John Cruz    14 年前

    当你说“他们不及格”的时候,及格是什么?它们是空白的吗?

    你可以检查参数本身,只是为了微笑,试着给它们一个不同的名字,一些特别的独特的东西。其他报表设置或参数的定义方式可能有问题。