如何向stimulsoft发送空参数? [英] How do i send null parameters to stimulsoft?

查看:92
本文介绍了如何向stimulsoft发送空参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

error =>参数化查询'(@ IsFilterDates位,@ IsFilterDocumentNumbers位,@ EnterpriseIds'需要参数'@FilterFromDocumentNumbers',这是未提供的..





error=>The parameterized query '(@IsFilterDates bit,@IsFilterDocumentNumbers bit,@EnterpriseIds ' expects the parameter '@FilterFromDocumentNumbers', which was not supplied..


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;

       }







,有时一些参数为null



报告[@ FilterFromDates] = null;

报告[@ FilterToDates] = null;

< br $>





and sometimes some of parameters is null

report["@FilterFromDates"] = null;
report["@FilterToDates"] = null;


   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









如何向我的报告发送空值以执行存储过程?



当某些参数为空时,我的存储过程确实有效,因为我在T-SQL中处理,但在项目中运行时不起作用。





How do I send null values to my report to exec stored procedure?

My stored procedure does work when some of parameters are null, because I handle in T-SQL, but does not work when run in project.

推荐答案

只是把它放在这里,这样就不会得到答案 - 另一个人是对的。 DBNull.value不为null,它在DB中为null。令人困惑,我知道,但在DB中为null的行为在C#中与null完全不同。
Just putting it here so that this stops being unanswered - the other guy is right. DBNull.value is not null, it's null in the DB. Confusing, I know, but null in DBs does have totally different behaviours to null in C#.


这篇关于如何向stimulsoft发送空参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆