0

我将日期与其他信息一起存储在 MS ACCESS 数据库中。但我似乎无法随心所欲地搜索它们。我想搜索:年,月。我正在使用一个datetimepicker

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

有人可以帮我吗?

4

1 回答 1

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'; 会发生什么?- 这可能会从数据库中删除您的表!

于 2013-02-12T13:48:45.010 回答