存储过程不返回任何数据 asp.net SQL Server 2008 R2



我正在编写一个过滤器搜索功能。也就是说,用户将根据日期时间或姓名、号码的任何记录。

这里我还返回了其他表中的数据。所以我也实现了一个内部联接。为此,我的存储程序如下-

ALTER PROC [dbo].[spFilterSearch]
@var1 VARCHAR(10),
@var2 VARCHAR(10),
@Printdate DATETIME,
@ToDate varchar(10),
@FromDate varchar(10)
AS BEGIN
    DECLARE @td DateTime SET @td=CONVERT(DATETIME,@ToDate,105)
    DECLARE @fd DateTime SET @fd= CONVERT(DATETIME,@FromDate,105)
    if(@Printdate <> NULL)
        BEGIN
            SELECT cVar1, cVar2, Printdate,
            bg.Fname AS Name
            FROM dbo.Table1 
            INNER JOIN dbo.jTable2 jt ON Table1.id = jt.id
            WHERE(cVar1 LIKE @var1+'%') AND
            (cVar2 LIKE @var2+'%') 
            AND (convert(datetime,Printdate,105)=@FPdate)
        END
    ELSE
        BEGIN
            SELECT cVar1, cVar2, Printdate,
            bg.Fname AS Name
            FROM dbo.Table1 
            INNER JOIN dbo.jTable2 jt ON Table1.id = jt.id
            WHERE(cVar1 LIKE @var1+'%') AND
            (cVar2 LIKE @var2+'%') 
            AND (convert(DATETIME,Printdate,105)>=@fd AND convert(DATETIME,Printdate,105)<=@td)
        END
END

(此过程不返回任何记录)在前端我已经编码为,为了发送空日期,我已经创建了FPdate property,如下所示public DateTime? FPdate { get; set; }

通过这种方式,我在search event handler 中使用它

if (txtPrintedOn.Text != "")
          {
              string[] dtt = txtPrintedOn.Text.Split(' ');
              objprop.FPdate = Convert.ToDateTime(dtt);
          }
          else
          {
              objprop.FPdate = null;
          }

为了从业务层以参数的形式发送它,我写了这样的代码-

if (prop.FPdate.Equals(null))
        {
            cmd.Parameters.AddWithValue("@Printdate", SqlDbType.DateTime).Value = Convert.DBNull;
        }
        else
        {
            cmd.Parameters.Add("@Printdate", SqlDbType.DateTime).Value = prop.FPdate;
        }
if (prop.ToDate != null)
            cmd.Parameters.AddWithValue("@ToDate", SqlDbType.VarChar).Value = prop.ToDate;
        else cmd.Parameters.Add("@ToDate", SqlDbType.VarChar).Value = Convert.DBNull;

最后,数据集返回为空。我的头撞在墙上好几个小时了,但没有得到任何线索

我哪里错了。请建议一种运行方式。

感谢

将SP更改为使用以下

if(@Printdate is not NULL)

签出这些链接-

Is NULL和=NULL 之间有什么区别吗

SQL为null且=null

使用此

cmd.Parameters.Add("@FPdate", SqlDbType.DateTime).Value = prop.FPdate.Value;

最新更新