2014-10-10 132 views
0

我正在編碼過濾器搜索功能。也就是說,用戶將根據 的任何記錄搜索數據,包括日期時間或姓名,號碼。存儲過程不返回任何數據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)[email protected]) 
     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)>[email protected] AND convert(DATETIME,Printdate,105)<[email protected]) 

     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; 

在年底的數據集是空車返回。幾個小時後,我的頭撞牆,但沒有得到任何線索

我在哪裏出錯了。請提出一種方法讓它運行。

感謝

+1

通過在ssms中執行sp獲取記錄嗎? – Mukund 2014-10-10 05:15:25

+0

你在sqlserver中缺少@FPdate參數嗎? – Mukund 2014-10-10 05:20:27

+0

是的,嘗試在管理工作室執行你的程序。 – 2014-10-10 05:20:44

回答

0

更改SP使用以下

if(@Printdate is not NULL)

結帳這些鏈接 -

Is there any difference between IS NULL and =NULL

SQL is null and = null

ü se this

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

+0

我已經按照你的建議進行了修改,仍然這個程序不返回任何記錄 – 2014-10-10 05:23:34

+0

你在管理工作室裏直接嘗試過sp嗎? ,也可以使用'.Value'作爲可爲空的屬性。 – 2014-10-10 05:23:59

+0

是的,我做過了,請你給我一個例子,我應該在哪裏添加這個.Value – 2014-10-10 05:26:18

相關問題