在记录上搜索日期

时间:2013-02-12 11:53:19

标签: delphi ms-access delphi-xe3

我在MS ACCESS数据库中存储日期以及其他信息。但我似乎无法随意搜索它们。我想搜索:年,月。我正在使用datetimepicker

目前我正在使用此代码执行此操作:     ADOTable1.Filter := 'Date > ' + Edit1.Text; ADOTable1.Filtered := True; end;

有人可以帮助我吗?

1 个答案:

答案 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'会发生什么? - 这可以从数据库中删除你的表格!