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