我在MS ACCESS数据库中存储日期以及其他信息。但我似乎无法随意搜索它们。我想搜索:年,月。我正在使用datetimepicker
目前我正在使用此代码执行此操作:
ADOTable1.Filter := 'Date > ' +
Edit1.Text;
ADOTable1.Filtered := True;
end;
有人可以帮助我吗?
答案 0 :(得分:2)
您有两种选择:您的解决方案使用不太优选的将字符串文字传递给查询。在这种情况下,您必须“逃避”您传递的值,例如
ADOTable1.Filter := 'Date > ''' + Edit1.Text + '''';
这将产生类似
的行ADOTable1.Filter := 'Date > ''27-Sep-69'''
更好的解决方案是使用参数化查询
select <whatever> from table
where date > :p1
您以下列方式传递参数
ADOTable.parambyname ('p1').asdate:= strtodate (edit1.text);
我承认我不使用ADO组件,因此语法可能略有偏差,但它是Firebird使用的语法。
参数优于使用原始文本值,因为您不必担心添加正确数量的引号,并且没有人可以传入错误的值。想象一下如果edit1.text包含'27 -Sep-65; Drop table1'会发生什么? - 这可以从数据库中删除你的表格!