I tried different ways, but no luck. Using Microsoft Visual Studio and SQL Server 2005 here is the C # code and sql code
List<SqlParameter> _params3 = new List<SqlParameter>(); _params3.Add(new SqlParameter("@startdate", txtDateFrom.Text)); _params3.Add(new SqlParameter("@enddate", txtDateTo.Text)); _params3.Add(new SqlParameter("@days", extendedDays)); extendedDays = Convert.ToInt32(DAL.executeStoredProcedureScalar( "Time_Difference_Calc", _params3));
SQL code:
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[Time_Difference_Calc] -- Add the parameters for the stored procedure here @startdate datetime, @enddate datetime, @days int output AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; set @days = (Select RawDays - NumWeeks * 2 + CASE WHEN StartWD = 1 THEN 1 ELSE 0 END - CASE WHEN EndWD = 7 THEN 1 ELSE 0 END + 1 AS Result FROM (SELECT Datepart(dw,@startdate) as StartWD, Datepart(dw,@enddate) as EndWD, DateDiff(d,@startdate,@enddate) as RawDays, DateDiff(wk,@startdate,@enddate) as NumWeeks ) A) --SET @ReturnValue = @days RETURN @days END
I can run it in the database just fine .. way 2 dates in .. works fine for what I need.
But whenever I actually run it on the page .. always get
System.NullReferenceException: An object reference is not set to an object instance. "
Original error: return cmd.ExecuteScalar (). ToString ();
Any help is appreciated. To a large extent, the idea is that I just want to get extended days equal to what the stored procedure returns.
source share