2013-10-08 4 views
-1

я хранимой процедуры в БД, что принятый 4 parameters.when я назвать эту процедуру из SqlDataSource и передать его параметры с помощью мастера SqlDataSource я получаю следующую ошибкупроцедура ожидает, что параметр, который не подавалась ошибки

ERROR [42000 ] [Microsoft] [ODBC SQL Server Driver] [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 [email protected] and MONTH (date)[email protected] and Year(date)[email protected] 
     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 [email protected] and MONTH (date)[email protected] and Year(date)[email protected] and [email protected] 
     group by SSNO,Full_Name,section,MONTH(date),Year(date) order by full_name; 
END 
+0

У вас есть эта работа на другой странице? Когда SQLDatasource пытается извлечь данные? – Michael

+0

Q1: нет, эта первая страница для использования этой процедуры Q2: yes –

+0

Ну, я имею в виду, вы используете SQLDatasource на другой странице, включая любые другие хранимые процедуры, которые вы могли бы назвать. И «да» - это не то время, когда. После какого события SQLDatasource вызывает хранимую процедуру? – Michael

ответ

0

ребята хорошая новость - я успешно решил проблему. Я использовал соединение odbc и кажется, что ошибка возникает при передаче параметров через ODBC connection.so я удаляю odbc и заменяю его обычным подключением sql, и все идет хорошо.

благодарит за вашу помощь.

0

Вместо:

 <asp:ControlParameter ControlID="ASPxComboBox1" DbType="String" DefaultValue="Enterprise solution" Name="Department" PropertyName="Value" Type="String" /> 

Try:

 <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

+0

Я все еще верю, что, применяя ваше предложение, оно не будет работать и потому, что в настоящее время я пытаюсь получить данные вручную из мастера sqldatasource с параметрами по умолчанию, и я получаю эту ошибку. –

+0

PropertyName должно быть SelectedValue not Value – PJM

0

Я думаю, что проблема в том, что вы связывание с DevExpress Combo Box. Попробуйте установить AutoPostback="true" на элементы управления ASPxComboBox. Кроме того, убедитесь, что ваш SqlDataSource находится в том же контейнере имен, что и DevExpress, ... у них были проблемы с этим в прошлом, но я не использовал их в течение многих лет, поэтому я не знаю, проблема.

0

Попробуйте использовать SelectedItem.Value вместо значений для параметров управления для combobox.

<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> 
+0

Я по-прежнему считаю, что, применяя ваше предложение, оно не будет работать и потому, что в настоящее время я пытаюсь получить данные вручную из мастера sqldatasource с параметрами по умолчанию, и я получаю эту ошибку. –

+0

@MamadoJozif Вы пробовали? Какую ошибку он дает? –

Смежные вопросы