officeba > 单独文章


利用Infopath2007实现SQL2005的数据查询

众所周知,利用Office System中的Infopath 创建各类表单,包括登记、管理、查询。 其中利用Infopath进行数据查询时,由于Infopath的查询是基于数据点值查询,即对查询数据库中的某个值,无法进行范围数据的查询实现。而在实际工作需要中,范围查询是一个查询功能中所必需,本文向大家介绍如何利用Infopath实现基于SQL的数据范围查询。

一.创建基于SQL的Infopath表单文档

1.启动 InfoPath2007。依次单击“设计表单模板”|“数据库”|“确定”。

2.在“数据连接向导”对话框中,单击“选择数据库”|“新建源”|“Microsoft SQL server。”|“下一步”|
在服务器名称中,输入数据库名称,如”Contoso\ConsSps|,设置相应的登陆凭据(建议将SQL数据库设置为SQL访问模式”

3.选择相应的表,如Contoso,单击“下一步”|“确定”,完成基于SQL的表单创建。

4.单击“工具”|“表单选项”|“编程”|设置“表单模板代码”为JSCript

单击“确定”
二.创建相应控件

1.清除默认内容,在“数据源”任务窗格中,双击“dataFields”。把“d:Contoso”节点移到表单的数据视图中。当出现提示时,添加“d:Contoso”作为一个“重复表”。

2.在“数据源”任务窗格中,选择“MyFileds”,单击“添加域或组”,设置名称“Query”,类型为“组”,单击“确定”。选择“Query”,单击“添加域或组”,设置名称“开始点”,类型为“文本域”,单击“确定”。选择“Query”,单击“添加域或组”,设置名称“结束点”,类型为“文本域”,单击“确定”

3.向表单中添加按钮控件,双击创建的控件按钮,设置标签为“查询”,单击“编辑表单代码”。


二.建立相应代码实现

写入如下

function Query::OnClick(eventObj)
{
 // 在此处编写代码
 var strOrigSQLCommand = XDocument.QueryAdapter.Command;
 var querySuppliers = XDocument.DOM.selectSingleNode("/dfs:myFields/dfs:queryFields/q:土地交易明细");
    var strMySQLCommand = XDocument.QueryAdapter.BuildSQLFromXMLNodes(querySuppliers);

 var QueryStartNum =querySuppliers.selectSingleNode("//my:Query/my:开始点").text;
 querySuppliers.selectSingleNode("//my:Query/my:开始点").text = "";
  var QueryEndNum =querySuppliers.selectSingleNode("//my:Query/my:结束点").text;
 querySuppliers.selectSingleNode("//my:Query/my:结束点").text = "";

 var strTitle = querySuppliers.selectSingleNode("@出让面积").text;
 querySuppliers.selectSingleNode("@出让面积").text = "";
 
 var strSupplierID = querySuppliers.selectSingleNode("@序号").text;
 querySuppliers.selectSingleNode("@序号").text = "";
 
 var strContactName = querySuppliers.selectSingleNode("@区域").text;
 querySuppliers.selectSingleNode("@区域").text = "";
 
 var strKejian = querySuppliers.selectSingleNode("@可建建筑面积").text;
 querySuppliers.selectSingleNode("@可建建筑面积").text = "";
 
 var strChengjiao = querySuppliers.selectSingleNode("@成交金额").text;
 querySuppliers.selectSingleNode("@成交金额").text = "";
 
 var strYongTu = querySuppliers.selectSingleNode("@用途").text;
 querySuppliers.selectSingleNode("@用途").text = "";
 
 var strYongjilv = querySuppliers.selectSingleNode("@容积率").text;
 querySuppliers.selectSingleNode("@容积率").text = "";
 
 var strChurang = querySuppliers.selectSingleNode("@出让方式").text;
 querySuppliers.selectSingleNode("@出让方式").text = "";
 
 var strJingDe = querySuppliers.selectSingleNode("@竞得单位").text;
 querySuppliers.selectSingleNode("@竞得单位").text = "";
 
 var strJuTiwei = querySuppliers.selectSingleNode("@土地具体位置").text;
 querySuppliers.selectSingleNode("@土地具体位置").text = "";
 
 var strTudiDanjia = querySuppliers.selectSingleNode("@土地单价").text;
 querySuppliers.selectSingleNode("@土地单价").text = "";

 var strLouMian = querySuppliers.selectSingleNode("@楼面地价").text;
 querySuppliers.selectSingleNode("@楼面地价").text = "";  
 
 //if (strTitle != "")
 //{
 //strMySQLCommand = strMySQLCommand  + strTitle;
 //}
 var strSQLQuery = strOrigSQLCommand;
 if (QueryEndNum != "")
  {
  strSQLQuery=strSQLQuery + "where  and 出让面积 >" + QueryStartNum + "and 出让面积 <= " + QueryEndNum ;
  }
  
      XDocument.QueryAdapter.Command = strSQLQuery;
 XDocument.Query();
     
 querySuppliers.selectSingleNode("@序号").text = strSupplierID;
 querySuppliers.selectSingleNode("@区域").text = strContactName;
 querySuppliers.selectSingleNode("@出让面积").text = strTitle;
 querySuppliers.selectSingleNode("@可建建筑面积").text = strKejian;
  querySuppliers.selectSingleNode("@成交金额").text = strChengjiao;
 querySuppliers.selectSingleNode("@用途").text = strYongTu;
 querySuppliers.selectSingleNode("@容积率").text = strYongjilv;
 querySuppliers.selectSingleNode("@出让方式").text = strChurang;
 querySuppliers.selectSingleNode("@竞得单位").text = strJingDe;
 querySuppliers.selectSingleNode("@土地具体位置").text = strJuTiwei;
 querySuppliers.selectSingleNode("@土地单价").text = strTudiDanjia;
 querySuppliers.selectSingleNode("@楼面地价").text = strLouMian;

 

   XDocument.QueryAdapter.Command = strOrigSQLCommand;
}a

 


声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!

时间:2008-01-21 18:41:48,点击:65824


【OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。

【声明】:以上文章或资料除注明为Office自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,本站确认后将立即撤下。谢谢您的支持与理解!


相关评论

我要评论

评论内容