特定の値を受け取った場合のみフィールドの要素の背景色を変更したい

97 views
Skip to first unread message

koya

unread,
Dec 14, 2021, 8:44:01 PM12/14/21
to RapidReportサポート QAフォーラム
おはようございます。Koyaと申します。
いつもご回答ありがとうございます。

帳票定義作成ファイルでフィールドの要素を追加しました。
取り込んだデータから特定の値を受け取った際に背景色を変更する、という事は出来ますでしょうか。

【運用例】
式 → .Country

.Countryで取り込んだデータが’日本’の場合   → 背景色を赤色にする
.Countryで取り込んだデータが’日本’以外の場合 → 背景色は無色とする

RapidReport

unread,
Dec 14, 2021, 11:11:23 PM12/14/21
to RapidReportサポート QAフォーラム
吉川です。

サンプルを作成しました。

①要素のプロパティを、動的に変更できるプロパティ「カスタマイズ」を利用ました。
フィールド要素のプロパティ「四角形」の「塗りつぶし色」を、
動的に変更することで実現しています。
詳しくはつぎのURLを参照してください。

②四角要素のプロパティ「表示条件」を利用しました。
「塗りつぶし色」を設定した四角要素を配置し、条件により表示させることで実現しています。

koya

unread,
Dec 14, 2021, 11:50:21 PM12/14/21
to RapidReportサポート QAフォーラム
吉川様

サンプルのご提供及び手順のご案内頂きありがとうございました。
後ほど確認させて頂き、不明点があれば再度お問い合わせさせて頂きます。

2021年12月15日水曜日 13:11:23 UTC+9 RapidReport:

koya

unread,
Dec 15, 2021, 9:52:55 PM12/15/21
to RapidReportサポート QAフォーラム
吉川様

いつもご回答ありがとうございます。
先日お問い合わせさせて頂きました件で、関連した内容のお問い合わせをさせて頂きます。

帳票定義ファイルで取り込んだデータの中に、”データなし”(下図Countryデータの2行目)の箇所があった場合
帳票定義ファイルには空欄で表示する方法を教えて頂けますでしょうか。
下図の式ですと、2行目は「欧米」と表示されてしまうので、2行目を非表示にしたいです。
宜しく御願い申し上げます。

空欄にしたい.png

2021年12月15日水曜日 13:50:21 UTC+9 koya:

RapidReport

unread,
Dec 16, 2021, 9:00:25 PM12/16/21
to RapidReportサポート QAフォーラム
吉川です。

次の式を書いてみて下さい。
(nvl
  (if (= .Country null) '')
  (if (= .Country '日本') 'アジア' '欧米')
)

もし、2行目のコンテントそのものを表示したくない、ということであれば、
コンテントのプロパティ「表示条件」に
(!= .Country null)
と書くことで、2行目が非表示になります。

koya

unread,
Dec 19, 2021, 8:18:13 PM12/19/21
to RapidReportサポート QAフォーラム
吉川様

早速のご回答頂きありがとうございました。
因みに、データベース側でnullではなく「空文字」がセットされている場合、
  (if (= .Country null) '') の部分の式が変わりますでしょうか。
ご回答頂けますと幸いでございます。

2021年12月17日金曜日 11:00:25 UTC+9 RapidReport:

RapidReport

unread,
Dec 20, 2021, 6:47:02 PM12/20/21
to RapidReportサポート QAフォーラム
吉川です。

はい、「空文字」の場合は式を変えます。
(nvl
  (if (= .Country '') '')

  (if (= .Country '日本') 'アジア' '欧米')
)

なお、RapidReportデザイナのプレビューで、
先頭に「' (シングルクォーテーション)」を付与することで、
データを文字列として扱います。
例えば、「0(数字のゼロ)」を、「0(文字列のゼロ)」として扱うには、「'0」のように入力します。
今回は、「(null)」を、「(空文字列)」として扱いたいので、
つぎのように入力してみてください。

プレビュー用データを文字列として扱う方法.png


koya

unread,
Dec 20, 2021, 9:25:07 PM12/20/21
to RapidReportサポート QAフォーラム
吉川様

早速のご回答ありがとうございます。
ご案内頂いた通りRapidReportデザイナのプレビューで、空文字の
先頭に「' (シングルクォーテーション)」を付与することで
期待通りの動作となり、2行目を非表示とする事が出来ました。

ちなみに、最初ご案内頂いた

(nvl
  (if (= .Country null) '')

  (if (= .Country '日本') 'アジア' '欧米')
)

の式では2行目が「欧米」と表示されてしまいました。
こちらの原因は御分かりになりますでしょうか?
(データはselect文でデータベースから取得してます。)

確かに、先頭に「' (シングルクォーテーション)」を付ければ2行目を非表示に出来ますが
全てのデータに付与する事は大変なので「' (シングルクォーテーション)」の付与を実施せずに
出来れば幸いです。

2021年12月21日火曜日 8:47:02 UTC+9 RapidReport:

RapidReport

unread,
Dec 21, 2021, 12:52:25 AM12/21/21
to RapidReportサポート QAフォーラム
吉川です。

の式では2行目が「欧米」と表示されてしまいました。
こちらの原因は御分かりになりますでしょうか?

式を順に説明します。少々長くなりますが、ご了承ください。

①nvlオペレータ
 nvlオペレータは、nullではない最初の引数を返す機能です。
 引数を一つ目から順に評価していきます。

②nvlオペレータの第一引数「(if (= .Country null) '')」を評価
 このとき、.Countryは「(空文字列)」であるため、 =オペレータの結果は、falseとなります。
 (= .Country null) → false

 結果、(if (= .Country null) '')は、(if false '') となる。
 (if (= .Country null) '') → (if false '')

 つぎに、if オペレータは、引数1がfalseで、かつ引数3が指定されていなければ、nullを返すので、
 (if false '') → null

 結果として、nvlオペレータの第一引数「(if (= .Country null) '')」を評価すると、
 「null」となります。

③nvlオペレータの第一引数が、②のとおり、nullであるため、
 つづく、nvlオペレータの第二引数「 (if (= .Country '日本') 'アジア' '欧米')」を評価します。
 ②と同じ順序で評価していきます。
 (= .Country '日本') → false
  (if false 'アジア' '欧米') → 欧米

④ ②③より、
 nvlの第一引数 → null
 nvlの第二引数 →  欧米
 でした。最初の式に当てはめると、
 (nvl null 欧米)
 となります。

 nvlオペレータは、nullではない最初の引数を返す機能です。
 最後にこれを評価し、「欧米」という結果を得ることになります。
 (nvl null 欧米) → 欧米

RapidReport

unread,
Dec 21, 2021, 12:56:45 AM12/21/21
to RapidReportサポート QAフォーラム
吉川です。追記します。

> 確かに、先頭に「' (シングルクォーテーション)」を付ければ2行目を非表示に出来ますが
> 全てのデータに付与する事は大変なので「' (シングルクォーテーション)」の付与を実施せずに
> 出来れば幸いです。

ご提案ありがとうございました。

確かに、文字列として評価するために、
全データにシングルクォーテーションを付与する操作は、手間ですね。

「シングルクォーテーションの付与を実施せずにできる」のは、難しいのですが、
何かいい方法がないか検討させて頂きます。

koya

unread,
Dec 21, 2021, 1:09:37 AM12/21/21
to RapidReportサポート QAフォーラム
吉川様

早速のご回答ありがとうございます。
また、式の内容を詳細にご説明頂いた事で 2行目が「欧米」と表示された原因も理解出来ました。
当件、代替案をご検討頂きありがとうございます。
お待ちさせて頂きます。

2021年12月21日火曜日 14:56:45 UTC+9 RapidReport:

koya

unread,
Jan 4, 2022, 8:11:04 PM1/4/22
to RapidReportサポート QAフォーラム
吉川様

こんにちは。Koyaです。
昨年は諸々ご支援頂きましてありがとうございます。
先月21日に頂いた下記のメッセージで、「シングルクォーテーションの付与を実施せずにできる」
代替案を検討して頂けるとの事でしたが現在も検討して頂いている最中でしょうか。
宜しく御願い申し上げます。


2021年12月21日火曜日 15:09:37 UTC+9 koya:

RapidReport

unread,
Jan 4, 2022, 9:22:18 PM1/4/22
to RapidReportサポート QAフォーラム
吉川です。

はい、代替案について現在検討中です。
2022年1月中にリリース予定となっております。

koya

unread,
Jan 4, 2022, 9:28:13 PM1/4/22
to RapidReportサポート QAフォーラム
吉川様

本件承知しました。
ご対応をお待ちしてます。

2022年1月5日水曜日 11:22:18 UTC+9 RapidReport:
吉川です。

はい、代替案について現在検討中です。
2022年1月中にリリース予定となっております。
Reply all
Reply to author
Forward
0 new messages