2010-03-24 49 views
0
SELECT COUNT(*) AS Expr1 
FROM Book 
INNER JOIN Temp_Order ON Book.Book_ID = Temp_Order.Book_ID 
WHERE (Temp_Order.User_ID = 25) 
AND (CONVERT (nvarchar, Temp_Order.OrderDate, 111) = CONVERT (nvarchar, GETDATE(), 111)) 

在這裏我想改變我的USER_ID從label.Text反正是有,我們可以得到一個標籤值到SQL

這個SQL語句是在一個數據視圖來獲得。所以在嚮導中它不接受文本框的值或任何東西。

有人可以幫我解決這個

+1

您可能想要更新您的文章,並在您談論DataView時說您正在(VB/C#).net框架中工作。你也可以澄清你想完成什麼?我假設你想通過user_ID添加一個過濾器功能,你可以在文本框中輸入什麼內容,但不是很清楚你想要做什麼。 – 2010-03-24 17:07:15

+0

謝謝。是的,它在C#中。我想在數據視圖中顯示某個sql語句的總和。 將該特定的SQL語句用作useridlabel.text作爲User_ID。 – Nubkadiya 2010-03-24 17:09:30

回答

0

切勿使用CONVERT比較日期列。要僅從日期時間比較日期,請使用BETWEEN。更好的是,在列中使用DATE類型而不是DATETIME。

要篩選DataView,請篩選其所基於的查詢。使用參數化查詢:

SELECT COUNT(*) AS Expr1 
FROM Book 
INNER JOIN Temp_Order ON Book.Book_ID = Temp_Order.Book_ID 
WHERE (Temp_Order.User_ID = @User_ID) 
AND Temp_Order.OrderDate BETWEEN @fromDate AND @toDate; 

傳遞@User_ID作爲參數傳遞給查詢:command.Parameters.AddWithValue("@User_ID", Convert.ToInt32(label.Text));

您還可以獲取使用LINQ和結果轉換爲數據視圖類似的結果,看到Filtering with DataView

除了基於字符串的 過濾能力數據視圖還 提供了使用LINQ 表達式過濾 標準的能力。 LINQ表達式允許 比 基於字符串的過濾更復雜和更強大的 過濾操作。

不管你做什麼,都不要使用DataView.RowFilter屬性。

相關問題