Welcome

首页 / 软件开发 / VFP / Excel-vfp-sql server结合应用实例

Excel-vfp-sql server结合应用实例2007-05-09说在前面

我不是专职的 Visual FoxPro 程序员,从最后一次用Visual FoxPro 写完整的应用程序,算来也有10多月了。三天不练手生、三天不说口生,我这么长时间不写真的要变成傻子了!前几天好友托我些个Excel->SQL Server的数据转换程序,盛情之下就答应了。花了两个晚上草草写就,一定是Bug多多。但是由于不会牵涉商业机密、公司利益,所以就想拿出来与大家交流,您可不要笑话我这个不如流的程序……

如果大家有兴趣,我会在接下来的日子里分析所有代码,直到使用Install Shield Express For Visual FoxPro将其打包。

前期计划

为什么选用Visual FoxPro

我有两种选择:用Delphi或是用Visual FoxPro。我选择Visual FoxPro 来做这个项目是考虑到:Excel的数据可能非常凌乱,有时候一个Sheet中的数据会对应到多个SQL Server表中,所以必须通过我的程序分解、组合数据。用Delphi的话,会非常麻烦--很多的条件判断+很多的循环;用Visual FoxPro在这方面就有优势,本地强健的光标系统,支持传统的XBase语言与标准的SQL语句,还有谁比它厉害呢?凭我对这两种语言的了解,我认为:用Visual FoxPro 完成此工作肯定比Delphi来得容易很多!

OOP的设计思路

朋友对我说,用户的最终意见没有定下来,随时有改动的可能,所以我尽量用OOP的方式,把一些不太会改变得内容做在基类里,例如:SQL Server的连接、事务的管理、Excel 文件的打开、关闭等;对于变异性大的内容,我尽量用同一的接口封装在子类里,例如,读取Excel 数据,分解数据等。

采用OLE方式读取Excel的数据

这是会遭到非议的一个设计,起码我的朋友就有意见:要让客户装一个Excel,太烦了吧!我的想法是:现在机器里装一个Excel 应该不是太困难;直接读取Excel文档能减轻用户操作负担;每次的数据量不太大(1000条一下),所以速度也不成问题;用OLE方式直接读取Excel文件能使应用程序更强大!

几点说明

运行环境

SQL Sever 7或2000(中英文版都可以);Visual FoxPro 7(英语版),不支持Visual FoxPro 3、5、6;Excel 2000或 XP (中英文版) ;中文操作系统。

Excel文档的规范

我附带三个Excel文档,规范就以他们为准。如果网友有类似的需要,可以在基类的基础上,自己制作子类以适应不同的需要。

先用起来

配置ODBC连接

本程序用连接字符串的方式连接SQL Server,所有连接信息写在了ODBC.TXT文档里:

DRIVER=SQL Server;UID=sa;DATABASE=Northwind;SERVER=BOE

请按照你的情况更改连接字符串。

建立数据表

所有的脚本都在SQL.SQL文件里,在SQL Server的“Query Analyzer”中运行一下就行了。

出错

出错的信息都会写在ERROR.LOG文件中,你可以查阅。

运行

库存数据对应:ck.xls

虚拟库存数据对应:virstore.xls

缴库单数据对应:sj.xls