C# 如何向在sql中创建并在stimulsoft中运行的函数发送空值?
运行project时,有一个错误输出: 错误=>参数化查询“(@IsFilterDates位、@IsFilterDocumentNumbers位、@EnterpriseIds”需要未提供的参数“@FilterFromDocumentNumbers” 我的代码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
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并更正了错误