C# 如何向在sql中创建并在stimulsoft中运行的函数发送空值?

C# 如何向在sql中创建并在stimulsoft中运行的函数发送空值?,c#,sql,sql-server,stimulsoft,C#,Sql,Sql Server,Stimulsoft,运行project时,有一个错误输出: 错误=>参数化查询“(@IsFilterDates位、@IsFilterDocumentNumbers位、@EnterpriseIds”需要未提供的参数“@FilterFromDocumentNumbers” 我的代码 public virtual ActionResult GetReportSnapshot() { var data = (ComparativeBalanceReportDS) Session["Comparati

运行project时,有一个错误输出:

错误=>参数化查询“(@IsFilterDates位、@IsFilterDocumentNumbers位、@EnterpriseIds”需要未提供的参数“@FilterFromDocumentNumbers”

我的代码

 public virtual ActionResult GetReportSnapshot()
    {
       var data = (ComparativeBalanceReportDS) Session["ComparativeSession"];
        StiReport report = new StiReport();
        report.Dictionary.DataStore.Clear();
        switch (data.NatureReportIdLevel)
        {
            case 1:
                report.Load(Server.MapPath("~/Content/StimulReports/group.mrt"));
                break;
            case 2:
                report.Load(Server.MapPath("~/Content/StimulReports/total.mrt"));
                break;
            case 3:
                report.Load(Server.MapPath("~/Content/StimulReports/ledger.mrt"));
                break;
            case 4:
                report.Load(Server.MapPath("~/Content/StimulReports/sampr.mrt"));
                if (data.IsNumberFilter != false)
                {
                    report["@FilterFromDocumentNumbers"] = data.NumberFilter.FromDocumentDocumentNumber;
                    report["@FilterToDocumentNumbers"] = data.NumberFilter.ToDocumentDocumentNumber;

                }
                else
                {

                    report["@FilterFromDocumentNumbers"] = null;
                    report["@FilterToDocumentNumbers"] = null;

                }
                             report["@IsFilterDates"] = data.IsDateFilter;
                    report["@IsFilterDocumentNumbers"] = data.IsNumberFilter;
                    report["@EnterpriseIds"] = data.EnterpriseId;
                    report["@FilterFromDates"] = data.DateFilter.FromDocumentDate.Value;
                    report["@FilterToDates"] = data.DateFilter.ToDocumentDate.Value;

                    report["@BaseCompareIds"] = data.BaseCompareId;
                    report["@NatureReportIdLevels"] = data.NatureReportIdLevel;


                break;

        }
and sometimes  some of parameters is null

               report["@FilterFromDates"] = null;
                    report["@FilterToDates"] = null;
我的sql函数

            Create function [dbo].[DetailFunction](@IsFilterDates bit,
                     @IsFilterDocumentNumbers bit,
                     @EnterpriseIds uniqueidentifier,
                     @FilterFromDates datetime,
                     @FilterToDates datetime,
                     @FilterFromDocumentNumbers int= null,
                     @FilterToDocumentNumbers int= null,
                     @BaseCompareIds int,
                     @NatureReportIdLevels int 
                    ) 
      returns @results table (
                      MonthOfDocumentItem nvarchar(20),
                       DetailAccountId nvarchar(50),
                        CreditDebit decimal,
                        Title nvarchar(150)
                                     ) as
    begin

      if @IsFilterDates=1 and @IsFilterDocumentNumbers = 1 and @BaseCompareIds = 2 and @NatureReportIdLevels = 4
      begin       
        insert @results (MonthOfDocumentItem,CreditDebit,DetailAccountId,Title)
        Select  [MonthOfDocumentItem],[CreditDebit],DetailAccountId,Title
        From FilterDetailDocumentItemWithDateAndNumber(@EnterpriseIds,@FilterFromDates,@FilterToDates,@FilterFromDocumentNumbers,@FilterToDocumentNumbers)
      end   
      else if @IsFilterDates=1 and @IsFilterDocumentNumbers = 0 and @BaseCompareIds= 2 and @NatureReportIdLevels = 4
      And @FilterFromDocumentNumbers is null And @FilterToDocumentNumbers is null
      begin       
        insert @results (MonthOfDocumentItem,CreditDebit,DetailAccountId,Title)
        Select  [MonthOfDocumentItem],[CreditDebit],DetailAccountId,Title
        From FilterDetailDocumentItemWithDate(@EnterpriseIds,@FilterFromDates,@FilterToDates)
      end   
      else if @IsFilterDates=0 and @IsFilterDocumentNumbers = 1 and @BaseCompareIds = 2 and @NatureReportIdLevels = 4 
      begin       
        insert @results (MonthOfDocumentItem,CreditDebit,DetailAccountId,Title)
        Select  [MonthOfDocumentItem],[CreditDebit],DetailAccountId,Title
        From FilterDetailDocumentItemWithDocumentNumber(@EnterpriseIds,@FilterFromDocumentNumbers,@FilterToDocumentNumbers)
      end  
      if @IsFilterDates= 0 and @IsFilterDocumentNumbers = 0 and @BaseCompareIds = 2 and @NatureReportIdLevels = 4 

      begin       
        insert @results (MonthOfDocumentItem,CreditDebit,DetailAccountId,Title)
        Select  [MonthOfDocumentItem],[CreditDebit],DetailAccountId,Title
        From FilterDetailDocumentItemWithoutDateAndNumber(@EnterpriseIds)
      end  
      return
              end
如何向report to exec存储过程发送空值


我的存储过程在某些参数为null时可以工作,因为我在T-SQL中处理,但在project中运行时不工作。

是否尝试传递
DbNull.Value
而不是`null`谢谢我使用了DbNull并更正了错误