在 dbedit 按键上过滤 DBGrid 上的数据
我使用 adodb/dbgo 进行编程并尝试使用此代码:
procedure TfrMain.dbeNoMejaKeyPress(Sender: TObject; var Key: Char);
begin
dmWarbam.TblTrans_temp.Filtered := False;
dmWarbam.TblTrans_temp.Filter := 'ID_ITEM = ' + QuotedStr(dbeNoMeja.Text);
dmWarbam.TblTrans_temp.Filtered := True;
end;
但是
procedure TfrMain.dbeNoMejaChange(Sender: TObject);
begin
dmWarbam.TblTrans_temp.Filtered := False;
dmWarbam.TblTrans_temp.Filter := 'ID_ITEM = ' + QuotedStr(dbeNoMeja.Text);
dmWarbam.TblTrans_temp.Filtered := True;
end;
以上都不起作用,当我在 dbeNoMeja 上按下键时,它没有过滤,而是将损坏/不完整的数据插入数据库的数据集。
有人能给我一些有效的例子吗(完整代码)
I programming with adodb/dbgo and try to use this code:
procedure TfrMain.dbeNoMejaKeyPress(Sender: TObject; var Key: Char);
begin
dmWarbam.TblTrans_temp.Filtered := False;
dmWarbam.TblTrans_temp.Filter := 'ID_ITEM = ' + QuotedStr(dbeNoMeja.Text);
dmWarbam.TblTrans_temp.Filtered := True;
end;
and
procedure TfrMain.dbeNoMejaChange(Sender: TObject);
begin
dmWarbam.TblTrans_temp.Filtered := False;
dmWarbam.TblTrans_temp.Filter := 'ID_ITEM = ' + QuotedStr(dbeNoMeja.Text);
dmWarbam.TblTrans_temp.Filtered := True;
end;
But none of above can work, when i press key on dbeNoMeja it didn't filter but instead the dataset inserting broken/incomplete data to database.
Can someone give me some example that working (full code)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果 dbedit 连接到与您要过滤的表相同的表,则会遇到问题,因为一旦您开始输入文本,该表就会进入 dsEdit 状态。
使用普通的 TEdit,并将通配符 (*) 附加到过滤器中的字符串
If the dbedit is connected to the same table as the one you want to filter you have a problem, because the table goes into the dsEdit state once you start entering text.
Use a normal TEdit, and append a wildcard (*) to the string in the filter
代码示例改编自Delphi-Neftalí。 漂亮又简单!
将 ClientDataSet 的提供程序设置为 ADO DB(根据您的情况):
Code example adapted from Delphi-Neftalí. Nice and simple!
Setting ClientDataSet's provider to ADO DB (in your case):
我在专家交流中找到了一个很好的解决方案,
I found a good solution in Expert Exchange,