function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
NONNON 

invalid operator on id fieldエラーに関して

参照関係があるテキストボックスにLIKE検索を行い、
invalid operator on id fieldエラーが発生しました。

IDを持つデータにLIKE検索できないというのは認識したのですが、
どの様に対処したらいいかが不明です。

他ページにての中に
https://developer.salesforce.com/forums/?id=906F00000009BPRIA2
>数式(テキスト型)にWhatId(ID)をコピーすることで検索可能です。
とあったのですが、いまいち何をすればいいのかわかっておりません。

理解不足で大変申し訳ないのです・・・
お時間ありましたら回答頂けると助かります。

 
Best Answer chosen by NON
Taiki YoshikawaTaiki Yoshikawa
おそらくこういうクエリのイメージだと思います。
Select Id, Name FROM Opportunity
    WHERE OwnerId IN (SELECT Id From User WHERE IsActive = false)

このクエリの実際の利用方法の補足はこちらです。
http://tyoshikawa1106.hatenablog.com/entry/2013/09/10/005722

確か...という情報ですが、サブクエリでLIKE判定はできなかった気がします。(実際の可否はご確認ください。)
経験上こういった場合はクエリを二回に分けてしまってもいいと思います。

最初にサブクエリ側のクエリを実行して、その結果のID情報をつかって本命のクエリを実行する感じです。

All Answers

Taiki YoshikawaTaiki Yoshikawa
Visualforceページで取引先の検索ボックスがあり、キーワードを入力するとあいまい検索でレコードが抽出されるような機能の開発というイメージでしょうか。

その場合はNameのLike検索で対応可能です。
/**
 * 取引先情報取得
 */
public List<Account> getAccounts(String key) {
    String searchKey = key + '%';
    return [SELECT Id,Name FROM Account WHERE Name LIKE: searchKey ORDER BY Name ASC LIMIT 20];
}

サンプルコードです。VisualforceではなくLightning Componentで、少しバージョンがふるくなってしまっていますが、ルックアップ項目の検索機能のイメージ確認ができると思います。
https://github.com/tyoshikawa1106/lightnign-input-form

 
NONNON
Yoshikawaさん

ご回答ありがとうございます。
>​Visualforceページで取引先の検索ボックスがあり、キーワードを入力するとあいまい検索でレコードが抽出されるような機能の開発というイメージでしょうか。

その通りなんですが、
情報が不足しており大変申し訳ありません。
頂きましたSELECT文にて確かに検索可能なんですが、
WHERE条件の一つに組み込むことに苦戦しております・・・

例えば登録した画面ですがこんな感じです。
名前:test
年齢:23
登録者:test123(ユーザ参照)

検索にてこんな感じでSELECT文書いておりました。
SELECT age , updateuser  from tablename
where age=23 AND updateuser  LIKE test%;
→invalid operator on id fieldエラー

WHERE条件に追加してこんなイメージでしょうか?

SELECT age , updateuser  from tablename
where age=23 AND (SELECT Id,Name FROM updateuser WHERE Name LIKE: test%)




 
Taiki YoshikawaTaiki Yoshikawa
おそらくこういうクエリのイメージだと思います。
Select Id, Name FROM Opportunity
    WHERE OwnerId IN (SELECT Id From User WHERE IsActive = false)

このクエリの実際の利用方法の補足はこちらです。
http://tyoshikawa1106.hatenablog.com/entry/2013/09/10/005722

確か...という情報ですが、サブクエリでLIKE判定はできなかった気がします。(実際の可否はご確認ください。)
経験上こういった場合はクエリを二回に分けてしまってもいいと思います。

最初にサブクエリ側のクエリを実行して、その結果のID情報をつかって本命のクエリを実行する感じです。
This was selected as the best answer
NONNON
Yoshikawaさん

ありがとうございました!
出来ました!
ご指摘頂きました通りクエリを2段階に分け、
1段階目で対象IDを集め、2段階目でそのIDを元に検索実行しうまくいきました。

色々ありがとうございました!