0

我正在尝试TDBGrid通过 a过滤 a TEdit,处理TEdit onChange事件。我有一个TIBQuery列出网格中的所有记录:

SELECT id,obra,cliente,fecha,nro_estudio,sondeo FROM proyecto;

当用户在 中插入字符时,该字段TEdit必须刷新网格。Cliente

我的代码尝试这样做,但是当它执行处理程序时,查询返回一个空的结果集。我正在使用 Firebird 2.5 和 IB 组件。

相关代码:

query := Self.qryTodos;
query.Close();
query.SQL.Clear();
query.SQL.Add('SELECT id,obra,cliente,fecha,nro_estudio,sondeo FROM proyecto WHERE cliente LIKE :Cliente');
query.ParamByName('Cliente').AsString := QuotedStr('%'+Self.busqueda.Text+'%');
query.Open();
DMConnect.Transaction.Commit();
4

2 回答 2

2

提供字符串参数时不需要 QuotedStr。通过使用它,你使它不再匹配(例如“String”变成'''%String%''')

于 2013-07-08T17:07:40.630 回答
0

如果你用 % 包围你的搜索词,我会使用包含子句,所以你可以这样写你的查询:

query := Self.qryTodos;
query.Close();
query.SQL.Clear();
query.SQL.Add('SELECT id,obra,cliente,fecha,nro_estudio,sondeo FROM proyecto WHERE cliente CONTAINING :Cliente');
query.ParamByName('Cliente').AsString := Self.busqueda.Text;
query.Open();

并删除@LightBulb 所述的 Commit 语句。如果您出于任何原因想在搜索词中包含 %,这将起作用。

于 2013-07-09T04:15:16.353 回答