过程需要未提供错误的参数
本文关键字:错误 参数 过程 | 更新日期: 2023-09-27 18:34:37
我在数据库中存储了接受 4 个参数的过程。当我从 SQLDatasource 调用此过程并通过 sqldatasource 向导传递其参数时,出现以下错误
错误 [42000] [Microsoft][ODBC SQL Server 驱动程序][SQL Server]过程或函数"director_proc"需要参数"@Department",但未提供。
下面是 SQLdataSource 标记和存储过程的代码
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
SelectCommand="director_proc" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="ASPxComboBox1" DbType="String"
DefaultValue="Enterprise solution" Name="Department" PropertyName="Value"
Type="String" />
<asp:ControlParameter ControlID="ASPxComboBox2" DbType="String"
DefaultValue="Enterprise operations" Name="Section" PropertyName="Value"
Type="String" />
<asp:ControlParameter ControlID="MonthEdit1" DbType="Int16" DefaultValue="7"
Name="Month" PropertyName="Month" Type="Decimal" />
<asp:ControlParameter ControlID="ASPxComboBox3" DbType="Int16"
DefaultValue="2013" Name="Year" PropertyName="Value" Type="Decimal" />
</SelectParameters>
</asp:SqlDataSource>
存储过程
USE [AccessmgmtDB]
GO
/****** Object: StoredProcedure [dbo].[director_proc] Script Date: 10/08/2013 14:22:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[director_proc]
-- Add the parameters for the stored procedure here
@Department nchar(50),
@Section nchar(50),
@Month numeric,
@Year numeric
AS
BEGIN
if(@Section is null)
SELECT SSNO ,Full_Name,152.5 [Working Hours],sum(diff) Actual_Hours,MONTH(date) as month,Year(date) Year
,(case when 152.5-sum([diff])<0 then 0 else 152.5-sum([diff])end) as [Missing Hours]
,(case when 152.5-sum([diff])<0 then 0 else (152.5-sum([diff]))/8.5 end) as [wanted days]
,section
FROM attendance2
where Department=@Department and MONTH ( date )=@Month and Year(date)=@Year
group by SSNO,Full_Name,section,MONTH(date),Year(date) order by full_name;
else
SELECT SSNO ,Full_Name,152.5 [Working Hours],sum(diff) Actual_Hours,MONTH(date) as month,Year(date) Year
,(case when 152.5-sum([diff])<0 then 0 else 152.5-sum([diff])end) as [Missing Hours]
,(case when 152.5-sum([diff])<0 then 0 else (152.5-sum([diff]))/8.5 end) as [wanted days]
,section
FROM attendance2
where Department=@Department and MONTH ( date )=@Month and Year(date)=@Year and section=@Section
group by SSNO,Full_Name,section,MONTH(date),Year(date) order by full_name;
END
而不是:
<asp:ControlParameter ControlID="ASPxComboBox1" DbType="String" DefaultValue="Enterprise solution" Name="Department" PropertyName="Value" Type="String" />
尝试:
<asp:ControlParameter ControlID="ASPxComboBox1" DbType="String" DefaultValue="Enterprise solution" Name="Department" PropertyName="SelectedValue" Type="String" />
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.controlparameter.propertyname.aspx
我认为
问题是你绑定到DevExpress Combo Box。尝试在 ASPxComboBox 控件上设置AutoPostback="true"
。此外,请确保 SqlDataSource 与 DevExpress 控件位于同一命名容器中...他们过去有过这个问题,但我多年来没有使用过它们,所以我不知道这是否仍然是一个问题。
尝试对组合框的控制参数使用 SelectedItem.Value
而不是值。
<SelectParameters>
<asp:ControlParameter ControlID="ASPxComboBox1" DbType="String"
DefaultValue="Enterprise solution" Name="Department"
PropertyName="SelectedItem.Value"
Type="String" />
<asp:ControlParameter ControlID="ASPxComboBox2" DbType="String"
DefaultValue="Enterprise operations" Name="Section"
PropertyName="SelectedItem.Value"
Type="String" />
<asp:ControlParameter ControlID="MonthEdit1" DbType="Int16" DefaultValue="7"
Name="Month" PropertyName="Month" Type="Decimal" />
<asp:ControlParameter ControlID="ASPxComboBox3" DbType="Int16"
DefaultValue="2013" Name="Year" PropertyName="SelectedItem.Value" Type="Decimal" />
</SelectParameters>
伙计们的好消息是我成功地解决了这个问题。我正在使用 ODBC 连接,似乎在通过 ODBC 传递参数时发生错误 connection.so 我删除了 ODBC 并将其替换为常规 SQL 连接,一切正常。
谢谢大家的帮助。