Есть ли в любом случае, что мы можем получить значение метки для Sql - PullRequest
0 голосов
/ 24 марта 2010
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, чтобы получить от ярлыка. Текст

этот оператор Sql находится в DataView. поэтому в мастере он не принимает значения текстового поля или что-либо еще.

Может кто-нибудь, пожалуйста, помогите мне решить эту проблему

1 Ответ

0 голосов
/ 25 марта 2010

Никогда не сравнивайте столбцы с датами, используя CONVERT. Чтобы сравнить дату только с датой, используйте МЕЖДУ. Более того, вместо столбца DATETIME используйте тип DATE для столбца.

Чтобы отфильтровать 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 и преобразовав результат в DataView, см. Фильтрация с помощью DataView .

В дополнение к строковому Возможности фильтрации DataView также предоставляет возможность использовать LINQ выражения для фильтрации критерии. Выражения LINQ позволяют гораздо более сложный и мощный операции фильтрации, чем строковая фильтрация.

Что бы вы ни делали, не используйте свойство DataView.RowFilter.

...