【发布时间】:2014-12-05 04:58:10
【问题描述】:
我正在编写过滤器搜索功能。也就是说,用户将根据 任何记录日期时间或名称、编号。
这里我也从其他表返回数据。所以我也实现了内部连接。 为此,我的存储过程如下-
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
(此过程不返回任何记录)
在前端
我已经编码,发送空日期我创建了FPdateproperty,如下所示
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;
最后,数据集返回为空。几个小时以来,我一直在用头撞墙,但没有得到任何线索
我哪里出错了。请提出一种让它运行的方法。
谢谢
【问题讨论】:
-
你是通过在ssms中执行sp来获取记录吗?
-
sqlserver 中是否缺少@FPdate 参数?
-
是的,尝试在管理工作室中执行您的程序。
-
存储过程不返回任何记录。
-
@Mukund 在这里输入时我犯了那个错误,但我没有遗漏任何参数
标签: c# asp.net sql-server-2008