用VFP制作演员表

2024-07-20

用VFP制作演员表

用VFP制作演员表 篇1

半年来,一直想写一篇关于用 Visual FoxPro 7 编写 Web Service 的文章,但总不成愿,这回不是我偷懒,为了了解这种新技术我和我的朋友们经历了种种“磨难”。这里略作回忆,也算是新春来临之际对“往年”的回眸——算是没有浪费太多的生命。

磨难一:发布向导不能正确发布Web Service。

7月份就拿到了 Visual FoxPro 7,查遍Sample,没有发现有关于 Web Service 的 Demo。但在Help里以及微软对 Visual FoxPro7 的宣传里,都信誓旦旦的:我们支持开发 Web Service…… 还好在 Msdn 里看到了一篇名为《Creating Web Services with Visual FoxPro》的文章。真的很不幸,按部就班做实验却不能正确发布 Web Service。经过反复研究,我认为这是一个 Bug,还好发现了能绕过这个Bug的路径。这个时候已经是10月份了……

磨难二:原来 Web Service 是无状态的!

真是浪费生命啊,还好我已经不是专业的 Visual FoxPro 程序员了,业余的消闲,没有压力。大家记得BOE上的我写的《Visual FoxPro 7 全新登场-- XML 在 COM 组件数据集传递中 的意义》一文吗?那篇东西的示例,原本是为本文的 Web Service 准备的:当代码仅编译为 COM 被使用时,一切都在我的设想中;而进一步发布为Web Service,怪问题产生了—— Web Service 不能记忆我对它命令。经研究原来 Web Service 是“无状态”的(“无状态”在前几年就看到过了,当时无法理解。没想到现在 Web Service 帮我理解了这个概念,也算因祸得福)。

磨难三:Xmltocursor()对中文支持有问题!

自以为已经能用 Visual FoxPro 编写一些小的 Web Service 应用了,于是向一位网友鼓吹:用Web Service做你那个应用吧!人家很仔细,第二天就告诉了我一个大问题:用 xmltocursor() 没法正确处理包含中文的 xml 文档,很多中文字符会被截断!昏倒,又是一个Bug!那个时候微软已经宣布将要发布Visual FoxPro7的SP1,于是我就一边等待SP1,一边寻找其他的解决方案。黄天不负有心人,west-wind竟然提供了这么一套类库wwXML,功能比Visual FoxPro7对XML的支持更强大,对中文支持也很好!

(经过测试,Visual FoxPro 7 的 SP1 已经解决了对中文字符的处理的问题)

磨难四:SP1竟然这么难安装!

1月16号,微软发布了 SP1。鬼知道,他们的安装程序是怎么做的——只能在Win9x下正确安装,win2000、xp 下都不行(听说有人在 Win2000 下成功安装了 SP1,真佩服他们的运气……)。还好论坛的 QXF 同志,把他在 win98 下安装的sp1后发现的更新文件打了包,分发给大家。现在,如果你装不上SP1 的话,只要在计算机里作如下处理就行了。

1.关闭Visual FoxPro7

2.拷贝文件DW15.EXE、DWINTL.DLL到Visual FoxPro7的HOME()目录。

3.在计算机里查找并替换VFP7.EXE、VFP7R.DLL、VFP7T.DLL、VFP7RENU.DLL、VFP7Runtime.MSM、VFPOLEDB.DLL、VFPOLEDB.MSM

闲话就说那么多了,让我们开始吧!

系统要求

1.各种版本的 Win2000及 Win Xp,并安装 IIS (其他版本的Windows没有试过)

2.安装Visual FoxPro7,建议安装SP1

3.安装 SOAP Toolkit 2.0(在 Visual FoxPro 7 安装盘里就有)

4.SQL Server 7 或者 SQL Server 2000

范例介绍

数据源

这个 Web Service 提供了两个数据查询的方法,分别是:检索系统中所有发票的功能以及查询某段时间中销售总额的功能,

我采用了SQL Server 的Demo数据库NorthWind为数据来源,为了凸现Visual FoxPro的威力,我有把这个数据库转换成为Visual FoxPro的本地DBC库。数据库的名称是:web_service.dbc,包含着13个表,这与SQL Server 里的NorthWind数据库是一致的!

好了,我们现在有两个一样的数据来源,一个是本地的DBC,另一个是远程的SQL Server数据库。在待会的试验中,我们会同时在这两个数据源中查询数据,大家就会看到 Visual FoxPro 在远程(异构)数据处理上的简便、灵活。

还有一些工作要做。我们知道,Visual FoxPro 访问远程数据库的方法是Remote View(远程视图) 和 SPT。其中 Remote View 是很有特色的,它的数据源是远程数据,但它本身又是本地 DBC 的成员,这样就能实现 Visual FoxPro 对远程数据源的快捷管理、完美融合。

这里根据需要我们要建立三个Remote View,分别对应 NorthWind数据库里的Orders、Order details 表和视图 invoices:可以通过如下命令完成:

CREATE SQL VIEW orders_sql REMOTE CONNECTION localSQLServer as select * from orders

CREATE SQL VIEW Order_details_sql REMOTE CONNECTION localSQLServer as select * from [order details]

CREATE SQL VIEW invoice_sql REMOTE CONNECTION localSQLServer as select * from invoices

这里用到连接“localSQLServer” 可以用如下命令生成:(大家可根据各人系统不同情况建立合法的连接!)

CREATE CONNECTION LocalSQLServer CONNSTRING “DRIVER=SQL Server;SERVER=BOEWORKS;UID=sa;PWD=;DATABASE=Northwind”

在试验中,我们还要用到由本地数据所产生的Local View(本地试图),它的效果与 invice_sql 一致,只不过前者的数据来源于本地的DBC,后者来源于SQL Server的NorthWind数据库。可以用如下代码实现:(如果你用视图设计器设计这个视图,你会发现视图设计器“报错”,这是因为:Visual FoxPro 的视图设计器不支持太过复杂的 SQL 语句。所以设计复杂视图时,应该直接手写代码,其实这也是众多SQL高手的通常做法!)

CREATE SQL VIEW invoice_vfp as ;

SELECT Orders.shipname, Orders.shipaddress, Orders.shipcity,;

Orders.shipregion, Orders.shippostalcode, Orders.shipcountry,;

Orders.customerid, Customers.companyname AS customernam,;

Employees.firstname+“ ”+Employees.lastname AS salesperson,;

上一篇:全年总结2010下一篇:小洲村一日游的作文