GeneXusの公式wikiにデータプロバイダーの条件式の記述方法があまり見当たらないので、備忘のためにも残します。
環境
GeneXus 15 Upgrade 12
単純な条件式
最もシンプルなIfのみの条件式を実現するには、下記のように記述します。
1 2 3 4 5 6 7 |
Test Where TestId = &TestId { ID = TestNewID Name = TestName If TestNum > 0 } |
If…Elseの実現
If…Elseを実現するには2通りの書き方があります。
1つ目はIIf関数を使用した記述です。
1 2 3 4 5 6 7 |
Test Where TestId = &TestId { ID = TestNewID Name = IIf(TestNum > 0, TestName, TestName2) } |
もう一つはトランザクションの式(formula)で記述する条件式のように、セミコロンとOtherwise節を使用した方法です。
1 2 3 4 5 6 7 |
Test Where TestId = &TestId { ID = TestNewID Name = TestName If TestNum > 0; TestName2 Otherwise; } |
動作上は問題なかったのですが、突然文法が変わるので後者は違和感がありますね。
Do Caseの代替
Do Caseコマンドのように複数の条件式を実現するには、IIf関数を駆使することで実現できます。
1 2 3 4 5 6 7 |
Test Where TestId = &TestId { ID = TestNewID Name = IIf(TestNum > 0, TestName, IIf(TestNum < 0, TestName2, TestName3)) } |
エクセルのIF文と同じように入れ子にして記述していくため、条件式が多いと非常に見づらくなってしまいます。