access中 Where子句的问题
select * from t where year(日期)=?and month(日期)=?and day(日期)=?and 姓名 like ?
在应用程序界面上,
用户如果输入了年份,则查询中包含year(日期)=?反之不包含。
如果输入了月份,则查询中包含month(日期)=?反之不包含。
如果输入了日期,则查询中包含day(日期)=?反之不包含。
如果输入了姓名,则查询中包含姓名 like ?反之不包含。
VS如何生成这样一个带参数的查询
------解决方案--------------------这个你在前台程序判断一下:
sql = 'select * from t where 1= 1 '
if 年份 <> 空
sql = ' and year(日期)= '+ 年份
if 月份 <> 空
sql = ' and year(日期)= '+ 月份
。。。
------解决方案--------------------根据界面中空间录入是否为空,来拼接响应sql、
举个例子,比如有两个控件 日期是textBox1 姓名是 textBox2
那代码代码大概就是这样子
string sql = "select * from T where 1=1 ";
if (!string.IsNullOrEmpty(textBox1.Text))
sql += "and data = " + textBox1.Text;
if (!string.IsNullOrEmpty(textBox2.Text))
sql += "and name = " + textBox2.Text;
------解决方案--------------------对每个变量附上null值,然后用isnull来判断是否存在,比如where year(日期)=isnull(@年份,year(日期))