tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:動的クエリとSOQLのtoLabel

以前、トランスレーションワークベンチで翻訳された値をSOQLで取得するにはtoLabelを使います。ということを書きました。


その続きの話です。


SELECTで取得する項目が固定の場合は、対象項目にのみtoLabelを指定すれば問題ありませんが、取得項目が動的に変更される場合、適当にtoLabelをつけるとエラーが発生してしまいます。

f:id:tyoshikawa1106:20141210123937p:plain


toLabel()を指定できる項目は選択リスト型とレコードタイプ型の項目のみとなっているためです。(トランスレーションワークベンチで翻訳できる項目がこの2つだったと思います。)


この問題はクエリ文字列にセットする際に、項目のAPIからデータ型を取得して対象の項目にのみtoLabel()を追加するという方法で対処できると思います。


いろんな方法があると思いますが、こんな感じでいけると思います。


これで翻訳された選択リストの値を表示できました。SELECT対象の項目が動的に変更されるケースというのはあまり無いかもしれませんが、コンポーネント化して使いまわすようなときに必要になると思います。