如何在InfoPath表单中引用SQL SERVER 中的数据
时间:2010-10-13 来源:Mingle
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拉。