I get the following error: (Thanks)
Procedure or function GetBusinessDays has too many arguements specified
The code I use is as follows:
private void processCompleteDateTimePicker_ValueChanged(object sender, EventArgs e)
{
DateTime startdate;
DateTime enddate;
startdate = DateTime.Parse(processStartDateTimePicker.Text);
enddate = DateTime.Parse(processCompleteDateTimePicker.Text);
SqlConnection conn = new SqlConnection("Data Source=server1;Initial Catalog=ProjCoorTools;Integrated Security=True");
SqlCommand cmd = new SqlCommand("GetBusinessDays", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@StartDate", startdate);
cmd.Parameters.AddWithValue("@EndDate", enddate);
cmd.Parameters.AddWithValue("@BusinessDays", SqlDbType.Decimal).Direction = ParameterDirection.Output;
try
{
conn.Open();
cmd.ExecuteNonQuery();
proctimeTB.Text = (Convert.ToString(cmd.Parameters["@BusinessDays"].Value.ToString()));
}
catch (SqlException err)
{
MessageBox.Show(err.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
conn.Dispose();
}
}
The Function in sql is as follows:
USE [ProjCoorTools]
GO
/****** Object: UserDefinedFunction [dbo].[GetBusinessDays] Script Date: 12/11/2009 14:49:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[GetBusinessDays]
(
@StartDate datetime,
@EndDate datetime
)
returns int
as
begin
declare @DaysBetween int
declare @BusinessDays int
declare @Cnt int
declare @EvalDate datetime
select @DaysBetween = 0
select @BusinessDays = 0
select @Cnt=0
select @DaysBetween = datediff(Day,@StartDate,@endDate) + 1
while @Cnt < @DaysBetween
begin
select @EvalDate = @StartDate + @Cnt
if (dbo.IsDateAHoliday(@EvalDate) = 0)
BEGIN
if ((datepart(dw,@EvalDate) <> 1) and (datepart(dw,@EvalDate) <> 7))
BEGIN
select @BusinessDays = @BusinessDays + 1
END
END
select @Cnt = @Cnt + 1
end
return @BusinessDays
end
Procedure or function GetBusinessDays has too many arguements specified
The code I use is as follows:
private void processCompleteDateTimePicker_ValueChanged(object sender, EventArgs e)
{
DateTime startdate;
DateTime enddate;
startdate = DateTime.Parse(processStartDateTimePicker.Text);
enddate = DateTime.Parse(processCompleteDateTimePicker.Text);
SqlConnection conn = new SqlConnection("Data Source=server1;Initial Catalog=ProjCoorTools;Integrated Security=True");
SqlCommand cmd = new SqlCommand("GetBusinessDays", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@StartDate", startdate);
cmd.Parameters.AddWithValue("@EndDate", enddate);
cmd.Parameters.AddWithValue("@BusinessDays", SqlDbType.Decimal).Direction = ParameterDirection.Output;
try
{
conn.Open();
cmd.ExecuteNonQuery();
proctimeTB.Text = (Convert.ToString(cmd.Parameters["@BusinessDays"].Value.ToString()));
}
catch (SqlException err)
{
MessageBox.Show(err.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
conn.Dispose();
}
}
The Function in sql is as follows:
USE [ProjCoorTools]
GO
/****** Object: UserDefinedFunction [dbo].[GetBusinessDays] Script Date: 12/11/2009 14:49:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER function [dbo].[GetBusinessDays]
(
@StartDate datetime,
@EndDate datetime
)
returns int
as
begin
declare @DaysBetween int
declare @BusinessDays int
declare @Cnt int
declare @EvalDate datetime
select @DaysBetween = 0
select @BusinessDays = 0
select @Cnt=0
select @DaysBetween = datediff(Day,@StartDate,@endDate) + 1
while @Cnt < @DaysBetween
begin
select @EvalDate = @StartDate + @Cnt
if (dbo.IsDateAHoliday(@EvalDate) = 0)
BEGIN
if ((datepart(dw,@EvalDate) <> 1) and (datepart(dw,@EvalDate) <> 7))
BEGIN
select @BusinessDays = @BusinessDays + 1
END
END
select @Cnt = @Cnt + 1
end
return @BusinessDays
end