最初のInfoPathフォームの一部を開始しています。私は3つのドロップダウンリスト(Global Function
、Major Task
、およびSubtask
)を持っており、SQLデータベースを照会し、その前にドロップダウンリストで選択した値に基づいてデータをフィルタリングする必要があります。私はこれまでInfoPath 2010のSQL Server 2008でのカスケードドロップダウンリスト
をやった
私はすでに、単純にすべてのレコードをデータベースに照会(ドロップダウンリスト対応テーブル&のそれぞれの)データ接続を追加しました表。各接続は、オフラインモードの「フォームテンプレートにデータのコピーを保存する」に設定されています。そして、ドロップダウンリストボックスのプロパティで、私は適切なのために列を選択すると、セットアップエントリフィールドを「外部データソースから選択肢を取得」するリストボックスの選択肢を設定している
テーブル/ドロップダウンリストの組み合わせ。
ただし、データにフィルタを追加してフォームをプレビューしようとすると、「カスケード」ドロップダウンリストのデータは決して変更されません。まだすべてのレコードがあります。
それで、カスケードドロップダウンの1つに新しいルールを追加しようとしました。
- 条件を実行し、これらのアクション
Action
- ルールのタイプ
Global Function is not blank
に:- クエリデータ接続を使用して、例えば以下のように、私はダウン
Major Task
ドロップのための新しいルールを作成し、それを設定します:メジャータスク(すべてのレコードを取得するだけ)
データをフィルタリングするルール/アクションのどこにも表示されません。私はすべての3つのテーブル(
GlobalFunctions
、MajorTasks
、およびSubtasks
)を持つ新しいデータ接続を試してみた- 条件を実行し、これらのアクション
EDITそれを正しくセットアップ関係(すなわちGlobalFunctions.Id = MajorTasks.GlobalFunction)。次に、ドロップダウンリストのデータソースをこの新しい接続に設定します。しかし、これもデータをまったくフィルタリングしません。次のように彼らのエントリと値は以下のとおりです。
- グローバル関数:
- エントリ:
/dfs:myFields/dfs:dataFields/d_1:GlobalFunctions
- フィルタ:
<None>
- 値:
@Id
- 表示名:
@Summary
- エントリ:
- 主なタスク:
-
の
- エントリ:
/dfs:myFields/dfs:dataFields/d_1:GlobalFunctions/d_1:MajorTasks
- フィルタ:
GlobalFunction = Id
- 値:
@Id
- 表示名:
@Summary
- エントリ:
- サブタスク:
- エントリ:
/dfs:myFields/dfs:dataFields/d_1:GlobalFunctions/d_1:MajorTasks/d_1:SubTasks
- フィルタ:
MajorTask = Id
- 値:
@Id
- 表示名:
@Summary
- エントリ:
- グローバル関数:
制限
- それはブラウザでは動作しませんので、私は(背後にある任意のコードを持つことができません
- フォームはウェブ上で記入することができなければなりません。ローカルマシン(ワークステーション上に保存されたコピー)
- はまだ動作すべきSQLデータベースへの接続がない
私は、複数のカスケードドロップダウンリストを実装するにはどうすればよいの質問
InfoPath 2010には、ブラウザで動作しInfoPath Filler(後者はデータベースに接続できない可能性があります)を使用できるMS SQLデータベースへのデータ接続があります。ここで
SQLテーブル
は、テーブルがどのように見えるかです:
CREATE TABLE GlobalFunctions (
Id SMALLINT NOT NULL IDENTITY(1,1),
Summary varchar(MAX) NOT NULL UNIQUE,
PRIMARY KEY (Id)
);
CREATE TABLE MajorTasks (
Id SMALLINT NOT NULL IDENTITY(1,1),
Summary varchar(MAX) NOT NULL UNIQUE,
GlobalFunction SMALLINT NOT NULL,
PRIMARY KEY (Id),
FOREIGN KEY (GlobalFunction) REFERENCES GlobalFunctions(Id)
);
CREATE TABLE SubTasks (
Id SMALLINT NOT NULL IDENTITY(1,1),
Summary varchar(MAX) NOT NULL UNIQUE,
MajorTask SMALLINT NOT NULL,
PRIMARY KEY (Id),
FOREIGN KEY (MajorTask) REFERENCES SubTasks(Id)
);