1 為什麼要這麼做,要引用背景資料幹嘛?
當你開啟一個基於瀏覽器的表單時,表單中的一些下拉式控制項,比如"商品類型","材料規格",你可能不希望讀者自己輸入,而希望直接從系統原有的SQL SERVER中的"商品類型表"讀取。
或者,你希望完成一些"自動填寫"操作,比如當輸入完"客戶名稱"時,"客戶地址"一欄就會根據系統原有資料自動填寫完成。
2 基於InfoPath Form Service來引用後台資料庫有什麼注意的?
基於網頁的表單,根據SDK文檔,你只能引用“唯讀”而不是提交的資料。也就是說,如果你想把表單直接回填到資料庫,你不能直接通過Infopath的無代碼設計,必須做Event Handler、工作流程、或是改用InfoPath方式。
3 這個過程InfoPath Form Service做了一個什麼事情?
當使用者開啟這個表單的時候,InfoPath Form Service伺服器自己,會以目前使用者身份,登入SQL 伺服器,用SQL把資料取回來。然後通過瀏覽器呈給使用者。
自己:這很重要,因為這表明,當開啟InfoPath的表單時,是伺服器自己去讀資料,而不是使用IE用戶端。
目前使用者身份:這更重要,因為你需要手動在SQL SERVER,資料庫下的“安全”“使用者”裡面,建立一個以“使用者名稱”為登入名稱的使用者,並給這個使用者Sys_DataReader的架構和許可權。
*我就是因為沒有意識到這個問題,在用Admin調試完了後,交給使用者使用而不成功,白白浪費了一個上午。
4 額外做的一個些事情:
需要調整網站結構,“網站所有內容”->“建立”->“資料連線庫”
如上所說,進入SQL SERVER,把將來使用該表單的使用者加入資料庫的,並賦於讀取許可權。
做這個事情主要是為了儲存,SQL的串連檔案。
5 主要步驟:
“工具”->“資料連線”->“添加”->資料連線嚮導中選“建立串連”下的“僅接受資料”點擊“下一步”->選“資料庫(僅SQL Server)”->點“選擇資料庫”按鈕->會彈出“選取資料來源”,你可以“建立一個SQL串連”,然後會彈出一個資料連線嚮導,你如提示建立好一個SQL串連並且要“串連到指定表格”(步驟省略),完成這些後你的“資料來源”除了“主”會多一個“輔助資料來源”,名稱就是你剛才建立串連設定的名稱。
重要的一步,做好這些後,進入“資料連線庫”(名稱你建立的時候任意命名),在你的電腦上“我的文件”下有一個“我的資料來源”下面有你剛才通過InfoPath建立的這個資料連線檔案一般是ODC副檔名。把這個檔案上傳到庫裡。
然後:在“工具”->“資料連線”->選中你的那個SQL資料來源,點擊“轉換...”,在對話方塊中可以指定那個資料連線檔案,請點擊“瀏覽”,選中你的SharePoint資料連線庫中的那個上傳的檔案。
很重要的一步: 進入那個資料連線庫,把庫中的一個以Odc和一個udcx為副檔名的檔案(轉換時產生的)全部設定為“批准”
6 如何把資料連到控制項上:
以列表為例:雙擊清單控制項,在“資料”選項卡上,選擇“從外部資料源尋找資料”,下面依提示選擇好。就OK拉。
還可以使用“規則”,比如在“使用者號”一欄使用“賦值”規則, 來完成“使用者名稱”的自動填寫:
當使用者號更改時,
把輔助資料來源的“使用者名稱”欄位值賦值給“使用者名稱”文字框域
篩選條件是:輔助資料來源的“使用者號”欄位值=“使用者號”文字框。
7 按正常程式發布到InfoPath表單庫裡就OK拉。
不管你的InfoPath 表單通過Web services 串連到資料庫,還是直接連接到資料庫,這個資料連線檔案都是儲存在xsn模版裡的。
並不是都需要將這個資料連線檔案轉換成UDC檔案的(Universal Data Connection),只有當你的InfoPath表單需要支援在SharePoint網站上用瀏覽器開啟,這種情況下,我們需要將這個資料連線檔案轉換成UDC,以保證能成功提交資料。