我试图使用combobox
在datagridview
上创建筛选器。 我想要做的是过滤datagridview
中的过滤数据。 我有7个comboboxes
过滤。例如,第一个combobox
是为年,然后我仍然想要过滤搜索到年级,然后到部分等。因此,用户将能够从数据库中排序或过滤他的搜索。如何从SQL Server中筛选年龄
到目前为止,我有我的存储过程代码,并在组合框中试过。 SchoolYear
,Grade
,section
,Gender
,, status
, Account
过滤效果很好..除了年龄,我设置我的查询来自动计算年龄而不保存到数据库中,现在我的问题是过滤年龄。
我这样做了我的存储过程。
ALTER PROCEDURE [dbo].[uspYearGradeFilter]
@Year Nvarchar(20) = NULL,
@Grade Nvarchar(20) = NULL,
@Section Nvarchar(20) = NUll,
@Gender Nvarchar(20) = NULL,
@Status Nvarchar(20) = NULL,
@Status2 Nvarchar(20) = NULL,
@Age Nvarchar(20) = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
si.StudentID, SI.Surname, SI.FirstName, SI.MiddleName,
si.Gender, si.BirthDay, SI.TelNum,
Birthday, getdate() AS [Today],
Datediff(yy, BirthDay, getdate()) -
CASE
WHEN DATEADD(YY, DATEDIFF(YY, BirthDay, getdate()), BirthDay) > GETDATE()
THEN 1
ELSE 0
END AS [age]
FROM
StudentInformation SI
JOIN
StudentHistory SH ON SI.StudentID = SH.StudentID
WHERE
sh.SchoolYear LIKE COALESCE('%'+ @Year+'%', sh.SchoolYear)
AND sh.Levels LIKE COALESCE('%' + @Grade + '%', sh.Levels)
AND SI.Gender LIKE COALESCE('%' + @Gender + '%', si.gender)
AND SH.Section LIKE COALESCE('%' + @Section + '%', sh.Section)
AND Si.Status LIKE COALESCE('%' + @Status + '%', si.status)
AND Sh.Status2 LIKE COALESCE(@Status2 + '%', sh.status2)
AND [Age] LIKE COALESCE('%' + @Age + '%', [Age])
END
但我得到一个错误:
Msg 207, Level 16, State 1, Procedure uspYearGradeFilter, Line 42
Invalid column name 'Age'
可有人请帮我解决这个问题?谢谢
边注:您可以在子查询中,虽然使用它为什么地球上**您使用'为nvarchar(20)**'像一个参数'@ Year'这显然** **是数值?请始终使用*最合适的*数据类型 - 对数值使用数字类型,对日期和时间使用日期和时间类型 - 不只是所有内容的字符串! –
@marc_s - 你不知道现代风格是每一个变量被声明为字符串,然后有一个'.ToString()'每当它被使用? – Hogan