众所周知,利用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
相关文章
同类最新