我開始使用我的第一批InfoPath表單。我有三個下拉列表(Global Function
,Major Task
和Subtask
),它們需要查詢SQL數據庫並根據其之前的下拉列表中的選定值過濾它們的數據。使用SQL Server 2008在InfoPath 2010中級聯下拉列表
我已經這樣做了遠東
我已經添加數據連接(每一個相應的下拉列表中的表&的),它只是在數據庫中查詢中的所有記錄表。每個連接都設置爲「在模板中存儲數據的副本」。
然後在下拉列表框屬性,我給自己定了列表框中選擇「擺脫外部數據源的選擇」和設置條目領域來選擇適當的列表格/下拉列表組合。
但是,當我向數據添加過濾器並嘗試預覽窗體時,「級聯」下拉列表中的數據永遠不會更改。它仍然有所有的記錄。
因此,我試圖爲其中一個級聯下拉添加新規則。例如,我創建了
Major Task
降的新規則下,並將其設置如下:- 條件來
Global Function is not blank
- 規則類型
Action
- 運行這些動作:
- 查詢使用數據連接:主要任務(它只是獲取所有記錄)
我在Rule/Action中看不到任何地方過濾數據。
- 條件來
編輯我只是試着它有三個表(
GlobalFunctions
,MajorTasks
和Subtasks
),其正確設置的關係(即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
- 條目:
- 全局功能:
限制
- 我不能有任何背後的代碼(因爲它不會在瀏覽器中運行對吧?)
- 該表格必須能夠在Web上或填寫本地計算機(工作站上保存的副本)
- 當有SQL數據庫沒有連接應該仍然工作
問題
如何實現多個級聯下拉列表中InfoPath 2010與數據連接到MS SQL數據庫,該數據庫可以在瀏覽器中工作並使用InfoPath Filler(後者可能沒有連接到數據庫)。
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)
);