none
【InfoPath】繰り返しフィールドでの計算 RRS feed

  • 質問

  • InfoPathにて、MOSS2007のカスタムリストから値を取得し
    計算するフォームを作成しております。

    カスタムリストには例として
    ・機種名
    ・単価
    ・数量

    という列を作成しておりまして、リストアイテムが
    10個(可変)ほどある状態です。

    この状態で、InfoPath上の繰り返しフィールドにMOSSから
    取得し、InfoPathの繰り返しフィールドに1列追加して、
    ・機種名
    ・単価
    ・数量
    ・小計

    そして、ヘッダ行で小計をSUM関数で計算する合計という
    コントロールを配置したいと考えています。

    小計という列では、単価×数量と単純にしたいのですが
    通常のテキストボックス等で数式を入れても、1行目だけが
    計算対象となってしまうので、今回は式ボックスを利用しました。
    しかし、式ボックス自体はどこかのコントロールに値が
    入っている訳でもなく、今度は、「合計」が出せない事が
    分かりました。

    極力コーディングは避けたいと考えております。
    何か良い方法が御座いましたらご教授頂けますと
    大変助かります

     

    2010年6月15日 1:28

回答

  • ^^;;;;

    なるほど、私の環境でも同じ現象が発生しました。これは仕様ですね。
    デモデータでは価格が全て同一でしたので気付きませんでした。
    解決方法は、
    【一旦productの選択された値を繰り返しフィールドの外にあるtempフィールド(隠し)に格納して、そのtempの値でセカンダリデータをフィルタする】
    ことです。

    もしよろしければ手前味噌で恐縮ですがこちらのご利用もご検討頂けると幸いです


    saruhiko
    2010年6月22日 9:40

すべての返信

  • どうも。 この例ですと、mossリスト側で「小計」 を計算してしまえば良いと思いますが如何でしょう?
    saruhiko
    2010年6月16日 4:52
  • saruhiko様

    いつも、お世話になっております。

    書き忘れておりました。すみません。

    私も一度カスタム列で小計という集計値の列を作成しました。

    しかし、集計値列はInfopathのデータ接続では列が参照出来ない事が分かりました。

    また、一応今回は、数量という列はデフォルトで「1」をMOSSリスト側で設定していますが

    この値はInfoPath側で自由に変更させ小計で再計算させる必要があります。

    申し訳ありませんが、何か案が御座いましたらご教授頂ければと思います。

    2010年6月16日 5:13
  • > しかし、集計値列はInfopathのデータ接続では列が参照出来ない事が分かりました。

    申し訳ない。すっかりこの制約を失念していました。
    ご要件とマッチするか分かりませんが、簡単な小計→総計フォームを作成してみました。
    データ接続は利用していませんが、基本的には同じ筈です。

    http://sharepointmaniacs.com/files/SumSample.zip


    saruhiko
    • 回答の候補に設定 山本春海 2010年6月21日 5:03
    2010年6月17日 13:25
  • saruhiko様

    サンプルありがとうございます。

    データ接続で取得した値をバインドしたコントロールは
    計算式が入れられないという仕様もInfoPathには
    あったのではないかと思っています。
    (私の環境では入れる事が出来ていませ

    こう考えて行くと、やはりコードを書く必要があるのかも
    しれませんね。

     

    2010年6月21日 4:46
  • ああ、やっとお悩みの箇所がわかりました。
    私の回答は的外れでしたね。申しわけありません。

    さて、ご指摘の通り、データ接続で取得した値「セカンダリデータ」として、
    あくまで静的データとしてフォームの裏側?に格納されるため、直接変更できません。

    これは仕様ですので、それを前提に、ちょっと設計方式を変更してやれば、
    標準機能で実装できます。

    仮に、これをマスタにします。

    まずデータ接続でこの値を取得した後、フォーム上で選択肢を用意し、
    どの商品を発注するか、ユーザに明示的に指定させます。
    その変更アクションで、セカンダリデータから、その商品の単価とデフォルト数量
    をコピーすればOKです。

    実際のサンプルリストのテンプレートと、設計変更したフォームを置いておきますのでお試し下さい。
    なお、当然ですが、フォームのデータ接続先のURLは、お手元の環境に合わせて変更して下さいね。

    http://sharepointmaniacs.com/files/SumSample2.zip


    saruhiko
    • 編集済み 中村 和彦 2010年6月21日 11:36 画像追加
    • 回答としてマーク ラクダcamel 2010年6月22日 0:51
    • 回答としてマークされていない ラクダcamel 2010年6月22日 0:51
    • 回答としてマーク ラクダcamel 2010年6月22日 0:52
    • 回答としてマークされていない ラクダcamel 2010年6月22日 6:38
    2010年6月21日 11:31
  • saruhiko様

    ご存知でしたらご教授頂きたいのですが、
    みかん 50
    りんご 90
    バナナ 200
    パイナップル 420
    もも 398
    オレンジ 130
    ざくろ 200
    マンゴー 298
    いちご 380

    という、マスタを作成しました。
    関数の不具合なのか不明なのですが、
    例えば、一つ目のドロップダウンで「ざくろ」を
    選択すると、「ざくろ」より上にあるリストアイテムでは
    例:オレンジなどは価格、数量ともに正常に取得出来ますが
    「ざくろ」より下にある、マンゴーやいちごを選択すると
    価格が「ざくろ」の価格となってしまいます。
    またざくろより上のアイテムを選択すると上記と同様に
    それ以下のアイテムの値が正常に取得出来なくなります。

    お忙しい中、恐れ入りますがご教授頂ければと思います。

     

    2010年6月22日 0:51
  • こんにちは、ラクダcamel さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。

     

    大変恐れ入りますが、多くの人が利用をしている場所なので、特定個人宛の直接の質問という形でのお願いはなるべく避けていただいたほうがいいかもしれません。

     

    また、当初のご質問の問題が解決されているようであれば、回答マークをつけていただいた方が、アドバイスしてくださった方もうれしいのではないかと思いますよ。

     

    回答としてマークがされていても、関連したご質問であれば続けていただいてもいいかと思いますが、別の問題の可能性が考えられることと、スレッドも長くわかりにくくなってくるかと思いますので、新しいスレッドでご質問いただいた方がいい場合もあります。

    ご検討くださいね。

    よろしくお願いいたします。

                                        
    マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2010年6月22日 8:54
  • ^^;;;;

    なるほど、私の環境でも同じ現象が発生しました。これは仕様ですね。
    デモデータでは価格が全て同一でしたので気付きませんでした。
    解決方法は、
    【一旦productの選択された値を繰り返しフィールドの外にあるtempフィールド(隠し)に格納して、そのtempの値でセカンダリデータをフィルタする】
    ことです。

    もしよろしければ手前味噌で恐縮ですがこちらのご利用もご検討頂けると幸いです


    saruhiko
    2010年6月22日 9:40
  • saruhiko様

    ご連絡ありがとうございます。

    色々試行錯誤してみたいと思います!

    アドバイザリーの件も確かに私のインフラエンジニアの視点では

    気付かない、発想がない点が多いなと考えているので念頭に

    入れさせて頂きます。

    2010年6月23日 1:13