トップ回答者
【InfoPath】繰り返しフィールドでの計算

質問
-
InfoPathにて、MOSS2007のカスタムリストから値を取得し
計算するフォームを作成しております。カスタムリストには例として
・機種名
・単価
・数量という列を作成しておりまして、リストアイテムが
10個(可変)ほどある状態です。この状態で、InfoPath上の繰り返しフィールドにMOSSから
取得し、InfoPathの繰り返しフィールドに1列追加して、
・機種名
・単価
・数量
・小計そして、ヘッダ行で小計をSUM関数で計算する合計という
コントロールを配置したいと考えています。小計という列では、単価×数量と単純にしたいのですが
通常のテキストボックス等で数式を入れても、1行目だけが
計算対象となってしまうので、今回は式ボックスを利用しました。
しかし、式ボックス自体はどこかのコントロールに値が
入っている訳でもなく、今度は、「合計」が出せない事が
分かりました。極力コーディングは避けたいと考えております。
何か良い方法が御座いましたらご教授頂けますと
大変助かります2010年6月15日 1:28
回答
-
^^;;;;
なるほど、私の環境でも同じ現象が発生しました。これは仕様ですね。
デモデータでは価格が全て同一でしたので気付きませんでした。
解決方法は、
【一旦productの選択された値を繰り返しフィールドの外にあるtempフィールド(隠し)に格納して、そのtempの値でセカンダリデータをフィルタする】
ことです。もしよろしければ手前味噌で恐縮ですがこちらのご利用もご検討頂けると幸いです。
saruhiko- 回答としてマーク ラクダcamel 2010年6月23日 2:55
2010年6月22日 9:40
すべての返信
-
> しかし、集計値列はInfopathのデータ接続では列が参照出来ない事が分かりました。
申し訳ない。すっかりこの制約を失念していました。
ご要件とマッチするか分かりませんが、簡単な小計→総計フォームを作成してみました。
データ接続は利用していませんが、基本的には同じ筈です。
↓
http://sharepointmaniacs.com/files/SumSample.zip
saruhiko- 回答の候補に設定 山本春海 2010年6月21日 5:03
2010年6月17日 13:25 -
ああ、やっとお悩みの箇所がわかりました。
私の回答は的外れでしたね。申しわけありません。さて、ご指摘の通り、データ接続で取得した値「セカンダリデータ」として、
あくまで静的データとしてフォームの裏側?に格納されるため、直接変更できません。これは仕様ですので、それを前提に、ちょっと設計方式を変更してやれば、
標準機能で実装できます。仮に、これをマスタにします。
まずデータ接続でこの値を取得した後、フォーム上で選択肢を用意し、
どの商品を発注するか、ユーザに明示的に指定させます。
その変更アクションで、セカンダリデータから、その商品の単価とデフォルト数量
をコピーすればOKです。実際のサンプルリストのテンプレートと、設計変更したフォームを置いておきますのでお試し下さい。
なお、当然ですが、フォームのデータ接続先のURLは、お手元の環境に合わせて変更して下さいね。http://sharepointmaniacs.com/files/SumSample2.zip
saruhiko2010年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- 回答としてマーク ラクダcamel 2010年6月23日 2:55
2010年6月22日 9:40