首页 > 单独文章 > 正文

利用Infopath2007实现SQL2005的数据查询

时间:2008-01-21 18:41:48 作者:officeba 【认证】

众所周知,利用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

 


相关文章

同类最新