0

我開始使用我的第一批InfoPath表單。我有三個下拉列表(Global Function,Major TaskSubtask),它們需要查詢SQL數據庫並根據其之前的下拉列表中的選定值過濾它們的數據。使用SQL Server 2008在InfoPath 2010中級聯下拉列表

我已經這樣做了遠東

  1. 我已經添加數據連接(每一個相應的下拉列表中的表&的),它只是在數據庫中查詢中的所有記錄表。每個連接都設置爲「在模板中存儲數據的副本」。

    然後在下拉列表框屬性,我給自己定了列表框中選擇「擺脫外部數據源的選擇」和設置條目領域來選擇適當的列表格/下拉列表組合。

    但是,當我向數據添加過濾器並嘗試預覽窗體時,「級聯」下拉列表中的數據永遠不會更改。它仍然有所有的記錄。

  2. 因此,我試圖爲其中一個級聯下拉添加新規則。例如,我創建了Major Task降的新規則下,並將其設置如下:

    • 條件來Global Function is not blank
    • 規則類型Action
    • 運行這些動作:
    • 查詢使用數據連接:主要任務(它只是獲取所有記錄)

    我在Rule/Action中看不到任何地方過濾數據。

  3. 編輯我只是試着它有三個表(GlobalFunctionsMajorTasksSubtasks),其正確設置的關係(即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) 
); 

回答

1

OK,我發現我的解決方案在this article

基本上我的問題是當我在當前的下拉列表上進行過濾時,我沒有在上一個下拉列表中選擇正確的值(實際選中的值)。相反,我選擇了基於數據庫數據的選項的值。

這是我走上解決我的問題(如果從文章轉載它的股價下跌)的步驟:

  1. 右鍵單擊第一個下拉列表,然後單擊「下拉列表屬性」並適當地設置其數據源。
  2. 右鍵單擊要級聯的下一個下拉列表,然後單擊「下拉列表屬性」。
  3. 正確設置數據源。
  4. 仍然在第二個下拉列表中,單擊「條目」框旁邊的「選擇XPath」按鈕。
  5. 點擊「篩選數據」,然後點擊添加。
  6. 在第一個下拉框中,選擇「選擇一個字段或組...」。
  7. 在「數據源」下拉列表中,選擇「主要」。
  8. 選擇「全局功能」字段中,在下拉列第一(可能是在「myFields」,然後「的Datafields」)。
  9. 在中間的下拉列表中設置您的等號運算符。
  10. 在最後的下拉列表中,選擇「選擇一個字段或組...」。
  11. 不更改數據源,在MajorTasks下選擇:GlobalFunction(與全局函數表的FK關係)。
  12. OK出所有對話框並重復Subtask下拉列表(系列中的最後一個)