我正在尝试通过TDBGrid
过滤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();
答案 0 :(得分:2)
当您提供字符串参数时,您不需要QuotedStr。通过使用它,你使它不再匹配(例如“String”变为'''%String%''')
答案 1 :(得分: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所述。如果您想出于任何原因在搜索字词中包含%,这将有效。