更新条件がブランクの場合について
2025-03-25 15:32

お世話になっております。
一覧タイプのデータ更新画面を作成しております。
名前と種類が一致する商品マスタを更新する画面を作成したいのですが、名前がブランクの空白だった場合に商品マスタに更新が走りません。
更新条件を「○○が空」にすれば、名前がブランクの商品に更新が走りますが、一覧画面なので名前が入っている場合も入っていない場合もあります。
こういった場合にどのような対処をすれば良いか、教えて頂けないでしょうか?
お手数おかけしますが宜しくお願いします。
回答を投稿するにはログインが必要です。


こんにちは。
弊社でも似たような事例がありました。
以下の方法をご提案します。記載頂いたサンプルをもとに表現します。
①cts商品マスタに「検索値」を項目追加します。
「検索値」には"名前"と"種類"を繋げた値を更新します。
②cts商品マスタを更新する際の更新条件は以下を設定します。
[検索値] が次と一致する [=UTIL.CELLV(処理対象行,名前)&UTIL.CELLV(処理対象行,種類)]
例
(商品マスタテーブル)
id,名前,種類,検索値
1,商品A,(空白),商品A
2,(空白),タイプa,タイプa
3,商品A,タイプa,商品Aタイプa
「商品A」で、種類がブランクの時は検索条件が[商品A]となりid.1がヒットします。
「商品A」で、「タイプa」の時は検索条件が[商品Aタイプa]となりid.3がヒットします。
テーブルへ項目追加が発生するので開発の手間が増えますが、ひとつの案として提案させて頂きました。
ご検討ください。
弊社でも似たような事例がありました。
以下の方法をご提案します。記載頂いたサンプルをもとに表現します。
①cts商品マスタに「検索値」を項目追加します。
「検索値」には"名前"と"種類"を繋げた値を更新します。
②cts商品マスタを更新する際の更新条件は以下を設定します。
[検索値] が次と一致する [=UTIL.CELLV(処理対象行,名前)&UTIL.CELLV(処理対象行,種類)]
例
(商品マスタテーブル)
id,名前,種類,検索値
1,商品A,(空白),商品A
2,(空白),タイプa,タイプa
3,商品A,タイプa,商品Aタイプa
「商品A」で、種類がブランクの時は検索条件が[商品A]となりid.1がヒットします。
「商品A」で、「タイプa」の時は検索条件が[商品Aタイプa]となりid.3がヒットします。
テーブルへ項目追加が発生するので開発の手間が増えますが、ひとつの案として提案させて頂きました。
ご検討ください。

返信ありがとうございます。
確かに複数の項目で空との比較やその他の条件がある場合は
更新アクションの分岐が複雑化してしまいそうですね。
その他のご回答者様の RAND5000様 の案もありだとは思います。
この場合は、複数の条件を「または」で結んでいるため、指定した条件と
一致しない場合に意図しない更新が行われる可能性があります。
更新前に対象の項目がマスタ上に存在しているかなどの
チェックが必要になると思います。
その他の案としましては、以下が思いつきました。
案:IDでのピンポイント更新
処理行毎に更新条件のキーとしている項目で検索を行い、商品マスタからIDを取得。
更新アクションではテーブルのIDが取得したIDのいずれかと一致する場合に更新
という条件にすることで、空白セルが含まれていても更新可能です。
行毎に検索処理を行うため、パフォーマンスの低下と
いずれかと一致するという条件比較は少し指定の癖がありますが、実現は可能です。
確かに複数の項目で空との比較やその他の条件がある場合は
更新アクションの分岐が複雑化してしまいそうですね。
その他のご回答者様の RAND5000様 の案もありだとは思います。
この場合は、複数の条件を「または」で結んでいるため、指定した条件と
一致しない場合に意図しない更新が行われる可能性があります。
更新前に対象の項目がマスタ上に存在しているかなどの
チェックが必要になると思います。
その他の案としましては、以下が思いつきました。
案:IDでのピンポイント更新
処理行毎に更新条件のキーとしている項目で検索を行い、商品マスタからIDを取得。
更新アクションではテーブルのIDが取得したIDのいずれかと一致する場合に更新
という条件にすることで、空白セルが含まれていても更新可能です。
行毎に検索処理を行うため、パフォーマンスの低下と
いずれかと一致するという条件比較は少し指定の癖がありますが、実現は可能です。
日本コンピューターシステム様
ご回答頂きありがとうございます!
やはり分岐を挟むしか方法はないでしょうか……。
where句の条件が少なければ問題ないと思いましたが、今回サンプル例を簡易化しており、実際に作りたいものは更新条件に空白が含まれる可能性のある項目が6~7個程あり、分岐が複雑になるのを懸念しております。
詳しくご回答頂いたのに申し訳ございませんが、引き続きお知恵を拝借できると大変有り難いです。
ご回答頂きありがとうございます!
やはり分岐を挟むしか方法はないでしょうか……。
where句の条件が少なければ問題ないと思いましたが、今回サンプル例を簡易化しており、実際に作りたいものは更新条件に空白が含まれる可能性のある項目が6~7個程あり、分岐が複雑になるのを懸念しております。
詳しくご回答頂いたのに申し訳ございませんが、引き続きお知恵を拝借できると大変有り難いです。

こんにちは!
条件を整理すると以下の認識であっていますでしょうか?
条件1:処理対象行の商品名と種類が一致する商品を更新
条件2:処理対象行の商品名が空の場合は、種類が一致する商品を更新
この場合、商品名が空なのかを「もし○○ならば」のアクションを利用して
更新アクションを分岐することで実現できます。
もし 処理対象行の商品名=空ではない
更新アクション条件
・名前が次と一致する:=処理行の商品名
かつ 種類が次と一致する:=処理行の種類
そうでなければ
更新アクション条件
・名前が空
かつ 種類が次と一致する:=処理行の種類
これにより、以下の分岐が可能となります。
商品名が設定されている場合は条件1の内容で更新が実施。
商品名が空の場合は条件2の内容で更新が実施。
条件を整理すると以下の認識であっていますでしょうか?
条件1:処理対象行の商品名と種類が一致する商品を更新
条件2:処理対象行の商品名が空の場合は、種類が一致する商品を更新
この場合、商品名が空なのかを「もし○○ならば」のアクションを利用して
更新アクションを分岐することで実現できます。
もし 処理対象行の商品名=空ではない
更新アクション条件
・名前が次と一致する:=処理行の商品名
かつ 種類が次と一致する:=処理行の種類
そうでなければ
更新アクション条件
・名前が空
かつ 種類が次と一致する:=処理行の種類
これにより、以下の分岐が可能となります。
商品名が設定されている場合は条件1の内容で更新が実施。
商品名が空の場合は条件2の内容で更新が実施。