0
私はボタンを押すと、特定の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 ... 'を使用してFormat関数のInteger値を使用してください。 – mjn
次のように変更します。 DBTravel.DataSource.DataSet.Filter:=フォーマット( '(ジョブID =%s)AND(モード=%s)'、[edtAddJobID.Text、edtSearchMode.Text]);モードエントリは文字列(例: 'Car'、 'Train')です。しかし、私はプログラムを実行し、モードを入力し、ボタンがそれは引数が間違ったタイプのことを言う、何が違うのですか? – Alexjjsmith
文字列フィールドを比較するときは、比較する文字列を引用符で囲む必要があります。 'DBTravel.DataSource.DataSet.Filter:= Format( '(Job_ID =%s)AND(Mode =%s)'、[edtAddJobID.Text、 QuotedStr(edtSearchMode.Text)]); ' – RRUZ