0
我想用2个不同的过滤器过滤表,以便按下按钮时显示的唯一记录是那些具有某个Job_ID和那些类型'私人的'。 我有以下代码:运算符不适用于此操作数类型当过滤表
if CBSearchType.Text = 'Private' then
begin
DBTravel.DataSource.DataSet.DisableControls;
DBTravel.DataSource.DataSet.Filtered := False;
DBTravel.DataSource.DataSet.Filter := ('Job_ID = '+edtAddJobID.Text) AND ('Type = '+QuotedStr('Private'));
DBTravel.DataSource.DataSet.Filtered := True;
DBTravel.DataSource.DataSet.First;
DBTravel.DataSource.DataSet.EnableControls;
end;
然而,当我尝试编译错误消息“操作并不适用于这一运算对象类型”显示,有什么建议? 谢谢
JOB_ID似乎是数字和edtAddJobID似乎是一个编辑字段。为了改进类型安全和用户输入错误处理,使用字符串到整数的转换,然后使用格式化函数中的整数值使用%d:'(Job_ID =%d)AND ...' – mjn 2012-04-04 18:31:47
下面的代码完成相同的代码以下变化 DBTravel.DataSource.DataSet.Filter:=格式('(Job_ID =%s)AND(Mode =%s)',[edtAddJobID.Text,edtSearchMode.Text]);模式条目是字符串,例如'Car','Train'。但是,当我运行该程序并进入模式,然后按下按钮它说参数是错误的类型,有什么不同? – Alexjjsmith 2012-04-04 20:09:51
当你比较一个字符串字段时,你必须引用字符串进行比较试试这个:'DBTravel.DataSource.DataSet.Filter:= Format('(Job_ID =%s)AND(Mode =%s)',[edtAddJobID.Text, QuotedStr(edtSearchMode.Text)]); ' – RRUZ 2012-04-04 20:12:07