“白沙凤凰河”通过精心收集,向本站投稿了7篇InfoPath开发实战(3):获取SQL Server中的数据,下面是小编精心整理后的InfoPath开发实战(3):获取SQL Server中的数据,希望能够帮助到大家。

InfoPath开发实战(3):获取SQL Server中的数据

篇1:InfoPath开发实战(3):获取SQL Server中的数据

本节的内容:

如何在InfoPath中使用数据连接来从SQL Server数据库中获取数据

如何通过代码来修改数据连接中的SQL查询

在开始设计InfoPath表单之前,先准备一个数据库,InfoPath支持两种数据库连接:

Microsoft Office Access数据库(.mdb文件或.accdb文件)

Microsoft SQL Server数据库

需要注意的是,InfoPath虽然支持SQL Server Express数据库,但却不支持以文件的形式连接SQL Server Express(直接连接.mdf文件),所以如果想使用SQL Server Express数据库,请将数据库文件(.mdf文件)附加到SQL Server Express中,这也就意味着,数据库无法同InfoPath一起分发,使用了SQL Server数据连接的InfoPath如果想要正常地进行查询,就必须保证客户端能够访问SQL Server数据库(无法离线查询)。使用Access数据库也需要确保客户端可以访问Access数据库。如果该Access数据库位于网络位置,则需要确保客户端可以访问该位置;如果Access数据库位于本地,那么分发InfoPath表单时就需要注意连同该数据库一起分发(这种方式可以实现离线查询)。

而查询方式上,这两种数据库都统一使用了SQL语法。

因为没有安装Office Access,所以本示例将使用SQL Server作为目标数据库。首先在SQL Server中创建一个名为TestDB的数据库,然后使用下面的脚本来向其中添加blogs表以及其内容:

/****** 对象: Table [dbo].[blogs] 脚本日期: 01/19/ 13:45:22 ******/

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[blogs]') AND type in (N'U'))

DROP TABLE [dbo].[blogs]

GO

/****** 对象: Table [dbo].[blogs] 脚本日期: 01/19/2009 13:45:22 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[blogs]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[blogs](

[name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,

[blog] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL

)

END

GO

INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'Windie Chai', N'xiaoshatian.cnblogs.com')/

INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'Terry Lee', N'terrylee.cnblogs.com')/

INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'AnyTao', N'anytao.cnblogs.com')/

INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'Anders Liu', N'andersliu.cnblogs.com')/

INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'Kaneboy', N'blog.joycode.com/kaneboy')

接着为InfoPath表单添加此数据连接,方法如下:

在“数据源”面板中点击“管理数据连接”;

在弹出的“数据连接”对话框中点击“添加”;

在弹出的“数据连接向导”对话框中选择“新建连接”和“仅接收数据”,点击“下一步”;

选择“数据库(仅Microsfot SQL Server 或 Microsoft Office Access)”作为数据源,点击“下一步”;

点击“选择数据库”,在弹出的“选择数据源”对话框中选中“+新 SQLServer 连接”,点击“打开”;

输入服务器名称和验证信息,点击“下一步”;

选择“TestDB”,取消勾选“连接到指定表格”,点击“下一步”;

输入文件名(或保留默认值),点击“完成”;

点击“编辑SQL”,在弹出的“编辑SQL”对话框中输入以下SQL查询字符串:

selectdistinctblogfromblogswherename='WindieChai'

点击“测试SQL语句”,显示测试成功后,点击“确定”关闭此对话框;

输入名称“blogs”,勾选“在打开表单时自动检索数据”,点击“完成”,

此时在打开“数据源”面板,将数据源切换为刚才创建“blogs(辅助)”,会看到InfoPath已经导入了SQL查询所返回的架构。

接下来我们添加一个超链接控件并绑定到item及其子元素上,藉此来显示所有的相册,方法如下:

在“数据源”面板中,点击最底层的blog元素旁的下箭头按钮,在其上下文菜单中选择【其他】;

在弹出的“选择控件”对话框中选择“超链接”,点击“确定”,这会在mainifest.xsf文件的设计界面中添加一个用于显示blog地址的超链接控件,并且该控件绑定到了查询结果的blog字段上。

然后回到mainifest.xsf文件的设计界面中,简单的调整一下控件的尺寸,添加一行描述文字,使其看起来如下图所示:

然后按F5键运行,可以看到InfoPath已经正确查询了数据库并且显示出了我的blog地址:

虽然本示例只是绑定了一个字段而已,但完全可以将查询得到的一组数据绑定到可重复的控件上,而且这也并不难实现。具体步骤如下:

在“数据源”面板中,按照之前添加blogs数据连接的方法添加名为bloggers的数据连接,该数据连接除了名称和SQL查询字符串之外,其余设置均和blogs数据连接相同,它的SQL查询字符串是:

select name from blogs

在“数据源”面板中,编辑blogs数据连接,取消勾选“在打开表单时自动检索数据”;

在“工具箱”中拖放一个“下拉列表框”控件到mainifest.xsf设计界面中;

在刚才拖放的下拉列表框控件上点击右键,选择【“下拉列表框”属性】;

在弹出的“下拉列表框属性”对话框中,找到“列表框项”区域,选择“从外部数据源查找值”;

在“数据源”中选择bloggers;

点击“项”右侧的“选择XPath”按钮,在弹出的“选择域或组”对话框中选中最底层的name字段;点击“确定”;

点击“确定”来关闭“下拉列表框属性”对话框。

简单地调整一下版式,使其看起来如下图所示:

按F5键运行,可以看到InfoPath已经正确查询了数据库并且在下拉列表框中列出了数据库中的bloggers:

下面我们来编写几行代码,让这个表单可以从SQL Server中筛选数据。

然后右键单击下拉列表框,选择【编程】【Changed事件】,这会在FormCode.cs中生成一个field2_Changed方法(你的方法名称或许会和我的稍有不同)。

在field2_Changed方法的代码如下:

public void field2_Changed(object sender, XmlEventArgs e)

{

AdoQueryConnection conn

= this.DataSources[“blogs”].QueryConnection as AdoQueryConnection;

conn.Command

= string.Format(“select distinct blog from blogs where name = '{0}'”, e.NewValue);

conn.Execute;

}

下面简单地解释一下这段代码:

首先获取辅助数据源blogs的QueryConnection,并将它转换为实际类型AdoQueryConnection,AdoQueryConnection是数据库型数据源的数据连接类型。

接着结合XmlEventArgs类型参数的NewValue属性来为该AdoQueryConnection生成新的Command。

最后调用AdoQueryConnection的Execute方法执行数据源,来重新获取辅助数据源中的数据。

仍然按F5来预览效果,表单打开后,下拉列表框中便列出了数据库中的几位bloggers,在其中选择了Kaneboy之后,就会显示出他的blog地址。最终效果如下:

本文配套源码

篇2:iOS项目开发实战――获取网页源代码的二进制数据

我在上一篇博客《iOS项目开发实战——iOS网络编程获取网页Html源代码》中讲述了如何获取一个网页的HTML源代码,可以满足一定的需求,但是由于特殊原因,我们想获取的是一个网页的二进制数据,那么应该怎么办呢?

具体实现如下:

(1)创建一个iOS项目,Language选择Swift,然后在ViewController.swift 中写入如下代码:

override func viewDidLoad() { super.viewDidLoad() var data = NSData(contentsOfURL: NSURL(string: www.baidu.com)!) println(data!)}

(2)运行程序,结果如下,能成功获取网页的二进制数据:

(3)现在对返回可能为空的情况进行优化,优化代码如下:

override func viewDidLoad() { super.viewDidLoad() var data = NSData(contentsOfURL: NSURL(string: fdsvsdfgvdf)!) if let binarydata = data{ println(data!) }else{ println(未能获取网络数据) }}此时的输出结果就是“未能获取网络数据”。防止系统网络请求失败时出现崩溃。InfoPath开发实战(3):获取SQL Server中的数据

篇3:iOS项目开发实战――iOS网络编程获取网页Html源代码

如今我们身处互联网的时代,任何一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互,一个没有涉及网络编程的应用会显得比较low,这里我们将会开始使用Swift开发iOS应用,并且主要来实现网络操作方面的功能。

这里的需求是获取某个网页的Html源代码,即从网上获取数据。具体实现如下:

(1)创建一个iOS项目,Language选择Swift。然后在ViewController.swift中实现如下代码:

override func viewDidLoad { super.viewDidLoad() var str = NSString(contentsOfURL: NSURL(string: www.baidu.com)!, encoding: NSUTF8StringEncoding, error: nil) println(str!)//上述返回的是Optional Type可选值,返回值有可能为空,在我确保有返回值的情况下,使用感叹号!获取该值; }

(2)运行程序,在控制台打印结果:(百度主页Html内容太多,我只复制出一部分)

通过以上代码,我们就能从网页上成功获取源代码,

但是由于我在上述注释中关于可选型的问题,我决定优化一下代码,就算网络数据访问不成功或者出现为空有异常等等情况,也能反馈给用户一个提示,优化代码如下,注意对Optional Type为空的操作。

override func viewDidLoad() { super.viewDidLoad()var strHTML = NSString(contentsOfURL: NSURL(string: 111111)!, encoding: NSUTF8StringEncoding, error: nil) if let print = strHTML{println(strHTML!) }else{println(未能获取网络数据) }}

运行以上代码,就能返回”未能获取网络数据“的提示了。就算网络有异常系统也不会崩溃。

篇4:iOS项目开发实战――使用同步请求获取网页源代码

网络请求一般分为同步请求和异步请求,同步请求如果访问时间过长,会造成界面卡死状态,用户体验不是很好,但是请求速度较快的话,也可以考虑使用同步访问。现在先来学习同步访问。

(1)在viewDidLoad()方法中实现如下代码:

override func viewDidLoad() { super.viewDidLoad() var data = NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: www.baidu.com)!), returningResponse: nil, error: nil) if let d = data{ println(NSString(data: d, encoding: NSUTF8StringEncoding)!)//打印HTML }else{ println(未能获取网络数据) } }

输出结果会成功打印出网页HTML。

(2)打印出Http协议头

在viewDidLoad()中实现以下代码:

override func viewDidLoad() { super.viewDidLoad() var resp:NSURLResponse? var data = NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: www.baidu.com)!), returningResponse: &resp, error: nil) if let r = resp{ println(r) //打印Http协议头; } }

输出结果如下:

(3)打印错误信息

在进行网络操作时,偶尔出现错误是不可避免的,我们可以打印出错误,便于我们查错,打印错误代码如下:

override func viewDidLoad() { super.viewDidLoad() var resp:NSURLResponse? var error:NSError? var data = NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: www.baidu.com)!), returningResponse: &resp, error: &error) if let e = error{ println(e) //打印Http协议头; } }

测试该代码时,我们可以关闭网络,然后就会出现错误:我进行测试时,出现的错误如下:

篇5:iOS开发CocoaPods实战

CocoaPods 是开发 OS X 和 iOS 应用程序的第三方库的依赖管理工具,如果是正常的开发不需要使用的第三方的代码,CocoaPods是不需要的,但是从实际情况上,为了提高开发效率,CocoaPods算是一个必备的开发工具之一,一般如果是简单的引用,CocoaPods的优势不是很明显,当项目用到的第三方应用程序越来越多的时候,CocoaPods可以根据定义的依赖关系,统一管理,第三开源库如果有更新,直接更新Pods文件即可。

CocoaPods基础

CocoaPods是用 Ruby 写的,并由若干个 Ruby 包 (gems) 构成的,所以有的时候我们会看到有人说CocoaPods利用依赖管理构建的依赖管理工具,CocoaPods中用到了Ruby管理工作的包(gem),

CocoaPods应该是iOS最常用最有名的类库管理工具了,绝大部分有名的开源类库,都支持CocoaPods。CocoaPods是用Ruby实现的,要想使用它首先需要有Ruby的环境。OS X系统默认的已经可以运行Ruby了,如果安装CocoaPods只需要在终端中输入一个命令:

sudo gem install cocoapods

CocoaPods是以Ruby gem包的形式被安装的,安装的时候大概需要十分钟左右,需要FQ,如果不FQ的花可以通过淘宝的Ruby镜像访问CocoaPods。如果gem包版本不够新,可以更新一下gem:

gem update

如果需要升级CocoaPods可以使用安装的时候的同样的命令:

sudo gem install cocoapods

篇6:如何利用电话调查获取数据?

香港商业巨子李嘉诚先生认为地产投资项目制胜的关键只有两个字:地段,地段,还是地段,这说明,任何一个项目中关键性的节点往往只有一两个,套用这个理念,在综合调查类竞争情报情报项目中,笔者认为重点是:数据,数据,还是数据。因为最终许多结论都需要数据的佐证和落实,所以,销售数据如何采集则十分重要。

在信息高度发达的今天,从来没有那种工具像电话这样被高频率使用,作为信息传递和沟通的重要介质,电话及其衍生的调研手段已被广泛应用,尤其是情报业务岗位。

本文将通过电话调查的手段――面、线、点三步法,来谈谈销售数据的获得。

一、面――纵观全局,准确把握基本面

以一个七叶皂苷纳的药品项目案例来剖析。通过掌握与项目有关的产品知识、行业状况,切入产品所涉及的相关行业。

获得行业情报

经过2-3天的搜集整理,行业状况基本得到了掌握:

1、项目中的产品是中药提取物,国家政策扶持类品种,医保范围用药;

2、目标调研公司的产品属于原研专利产品,在发改委单独定价,是国家同类产品标准制订时的参考试验品;

3、国内同类产品的生产企业不下20家,有3个品规:冻干粉剂,口服剂,搽剂;

4、冻干粉剂大约占70-80%,冻干粉剂主要的规格有2个:5mg ,10mg,

5、此类产品市场规模大约15个亿,国内重点市场区域;

6、部分重点企业的销售规模和市场位置关系。

情报来源和途径

通过互联网可以发现国内的一些药研所、协会、知名医院的研究部门在网上发布了一些七叶皂苷纳行业的研究报告,由此分析,这个产品应该是一个比较热门的产品,同时得到一个假设:目标公司举足轻重,可能影响行业标准的制订。

由于对一些关键性的行业信息做了准备和分析,为进一步的工作作了铺垫。情报人员先后借不同名称的高等院校管理学院的学生的名义,以撰写毕业论文为由,向多个药研所打电话咨询该产品的市场发展趋势、医生用药习惯、国内市场规模、不同区域市场容量等等。许多相关重点问题都得到了专家给出的极具参考价值的答案。

行业协会也是一个很重要的情报途径,这里往往掌握着业内主要标杆企业的官方数据。在电话咨询过程中,小组成员始终以谦卑的态度,学习的愿望,尊敬长者的语调与对方交流,由于气氛控制的比较融洽,行业中关键企业的销售规模也从这个管道得到部分透露,虽然是一鳞半爪的信息,但往往成为确定销售口径大小的重要依据。

篇7:如何利用电话调查获取数据?

香港商业巨子李嘉诚先生认为地产投资项目制胜的关键只有两个字:地段,地段,还是地段,这说明,任何一个项目中关键性的节点往往只有一两个,套用这个理念,在综合调查类竞争情报情报项目中,笔者认为重点是:数据,数据,还是数据。因为最终许多结论都需要数据的佐证和落实,所以,销售数据如何采集则十分重要。

在信息高度发达的今天,从来没有那种工具像电话这样被高频率使用,作为信息传递和沟通的重要介质,电话及其衍生的调研手段已被广泛应用,尤其是情报业务岗位。

本文将通过电话调查的手段——面、线、点三步法,来谈谈销售数据的获得。

一、面——纵观全局,准确把握基本面

以一个七叶皂苷纳的药品项目案例来剖析。通过掌握与项目有关的产品知识、行业状况,切入产品所涉及的相关行业。

获得行业情报

经过2-3天的搜集整理,行业状况基本得到了掌握:

1、项目中的产品是中药提取物,国家政策扶持类品种,医保范围用药;

2、目标调研公司的产品属于原研专利产品,在发改委单独定价,是国家同类产品标准制订时的参考试验品;

3、国内同类产品的生产企业不下20家,有3个品规:冻干粉剂,口服剂,搽剂;

4、冻干粉剂大约占70-80%,冻干粉剂主要的规格有2个:5mg ,10mg

5、此类产品市场规模大约15个亿,国内重点市场区域;

6、部分重点企业的销售规模和市场位置关系,

情报来源和途径

通过互联网可以发现国内的一些药研所、协会、知名医院的研究部门在网上发布了一些七叶皂苷纳行业的研究报告,由此分析,这个产品应该是一个比较热门的产品,同时得到一个假设:目标公司举足轻重,可能影响行业标准的制订。

由于对一些关键性的行业信息做了准备和分析,为进一步的工作作了铺垫。情报人员先后借不同名称的高等院校管理学院的学生的名义,以撰写毕业论文为由,向多个药研所打电话咨询该产品的市场发展趋势、医生用药习惯、国内市场规模、不同区域市场容量等等。许多相关重点问题都得到了专家给出的极具参考价值的答案。

阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。