深入浅出InfoPath——如何在InfoPath表单中引用SQL SERVER 中的数据

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,以保证能成功提交数据。

posted @ 2010-10-13 12:09  风影极光  阅读(756)  评论(0编辑  收藏  举报