我将日期与其他信息一起存储在 MS ACCESS 数据库中。但我似乎无法随心所欲地搜索它们。我想搜索:年,月。我正在使用一个datetimepicker
目前我正在使用此代码执行此操作:
ADOTable1.Filter := 'Date > ' +
Edit1.Text;
ADOTable1.Filtered := True;
end;
有人可以帮我吗?
我将日期与其他信息一起存储在 MS ACCESS 数据库中。但我似乎无法随心所欲地搜索它们。我想搜索:年,月。我正在使用一个datetimepicker
目前我正在使用此代码执行此操作:
ADOTable1.Filter := 'Date > ' +
Edit1.Text;
ADOTable1.Filtered := True;
end;
有人可以帮我吗?
您有两种选择:您的解决方案使用不太可取的一种将字符串文字传递给查询。在这种情况下,您必须“转义”您传递的值,例如
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'; 会发生什么?- 这可能会从数据库中删除您的表!