怎么利用vfp找到vfp完整数据库实例中全部姓张的数据?

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
VB环境下实现VFP数据库的开发
下载积分:400
内容提示:VB环境下实现VFP数据库的开发VB环境
文档格式:PDF|
浏览次数:19|
上传日期: 10:50:26|
文档星级:
该用户还上传了这些文档
VB环境下实现VFP数据库的开发
官方公共微信第3章 VFP数据库及其操作_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
第3章 VFP数据库及其操作
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
你可能喜欢vfp_百度百科
Visual FoxPro ,是Microsoft公司从Fox公司的FoxBase数据库软件经过数次改良,并且移植到Windows之后,得来的软件,主要用于开发与运算等方面的软件。VFP是Microsoft公司推出的最新可视化平台,是功能特别强大的32位数据库管理系统。它提供了功能完备的工具、极其友好的用户界面、简单的数据存取方式、独一无二的,具有良好的兼容性、真正的可编译性和较强的安全性,是目前最快捷、最实用的数据库管理系统软件之一。
VFP(Vector Floating-point Coprocessor for ARM)向量()
VFP除了提供浮点数基本运算(加、减、乘、除、开方、比较、取反)提供支持之外,最有特点是它向量(vectors)功能。它同时支持最多8组单精度4组的运算。有关这部分的叙述请参考&&ARM Architecture Reference Manual&& Chapter C5 VFP Addressing Modes。
FoxBase采用命令行方式(为了和当时流行的数据库软件dBase兼容……)但是速度比当时其他的数据库软件要快。
由于其为32位的数据库开发系统且具有良好的跨平台特性,它可以运行于Windows95/98/2000/XP/Vista/7等操作系统之上。
vfp成长之路
Visual FoxPro(以下简称VFP)是个不断成长的小伙,承蒙Visual Studio(以下简称VS)的关照,VFP在开发者心目中一直是和VB、VC地位相同的工具语言,只不过它并不是通用开发工具,而只是专注于的开发。
然而,吊足大家胃口的VS. NET终于出现在开发者面前时,竟不见了VFP的身影,着实引起开发社区的一阵骚动。微软不要VFP了?不是,恰恰相反,VFP忍受不了VS缓慢的升级速度,“单干”了。现在的VFP已经升级到版本9,并且完全支持.NET技术。
Visual FoxPro 6.0及其中文版,是可运行于Windows 95和Windows NT平台的32位数据库开发系统,它不仅可以简化,而且能使应用程序的开发流程更为合理。Visual FoxPro 6.0使组织数据、定义数据库规则和建立应用程序等工作变得简单易行。利用可视化的设计工具和向导,用户可以快速创建、查询和打印报表。
Visual FoxPro 6.0还提供了一个的系统开发环境,它不仅支持过程式,而且在语言方面作了强大的扩充,支持可视化编程技术,并拥有功能强大的可视化程序设计工具。目前,Visual FoxPro 6.0是用户收集信息、查询数据、创建集成、进行实用系统开发较为理想的工具软件。
Web Services支持 VFP 7支持注册和发布Web Services,而无需使用Microsoft SOAP Toolkit和VFP扩展来从底层完成这些任务;
增强 VFP 7对于COM服务器作了很大程度的增强,可以与核心平台如COM+服务进行互操作;
XML支持 为了适应以XML形式在Web上传送数据的潮流,VFP 7提供了一些函数用于在XML数据和FoxPro(Cursor)或表格(Table)之间的转换。
多样的XBase特性 VFP添加了很多新的或改进的XBase特性,并且这些特性都是用VFP语言编写的;
OLE DB Provider 通过实现OLE DB Provider接口,开发者可以在任何支持OLE DB的程序和语言中调用VFP数据。
n 数据特性增强 VFP 8对其数据特性进行了改进,并增加了很多新的数据特性,包括:远程、创建DataEnvironment类、自动增长域值、支持对照序列、与SQL语句Select…Union之间的隐式数据转换、使用SQL Select命令插入行等;
其他增强 VFP 8对一些工具、示例数据库和解决方案案例都进行了改进。
数据和XML增强 这一时期的VFP对其数据特性进行了巨大的加强,改进项目之多真是令人眼花缭乱,详情可以参考这里,此处不再赘述;
实现SQL语言 VFP 9已经能够充分地支持SQL查询语言;
设计器的增强 VFP 9增强了这些设计器:报表和标签设计器、菜单设计器、表格设计器、查询和器、数据环境设计器以及类和设计器等;
其他方面的增强 和VFP 8一样,VFP 9在其他微小的细节上进行了不少的改进,使得开发者的体验更加舒适。
微软已经于,2007年前后,宣布 Visual Foxpro 停止研发,VFP9 是最后一个官方版本。微软在曾经2007年3月份的时候声称,将会对 Visual Foxpro 开放到其代码共享社区站点CodePlex上,但是截止到2010年4月,在CodePlex似乎似然搜索不到Visual Foxpro的源代码。
日前,在微软官方网站释出了一份公告A Message to the Community,说明未来将不会再推出 VFP 10,并且持续 VFP 9 的支持到 2015 年,之后只会在 2007 年夏季推出 SP2。2006年进行的 Sedna 项目则是增强VFP对SQL Server 2005与 Vista的支持,其他的一些项目则已经开源到。
vfp需要注意
SPT的全称为SQL Pass-Through,它和远程视图(Remote View)、CA(CursorAdapter,VFP8及后序版本支持)共同构成了VFP实现数据库操作的利器。远程视图及CA实质上都是基于SPT技术,与它们相比,SPT要更为灵活,它可以直接创建数据库接连,执行数据库原生SQL语句,并可以获取(Cursor),通过设置能使对临时表的更改更新到数据库表中。SPT的缺点是不、代码量大。
vfp与数据库建立连接
VFP可以通过SQLCONNECT()函数或SQLSTRINGCONNECT()函数可以和任何支ODBC驱动的数据库建立连接,成功建立连接后将返回一个大于0的整数型句柄,如果连接失败则会返回-1。通过这个句柄我们可以用SQLEXEC()函数向数据库发送SQL语句,最后需要调用SQLDISCONNECT( )函数断掉连接。
例1:假设已存在一个名称为MyNewDB的数据源,用户名是sa,密码是admin,使用SQLCONNECT()函数创建数据库连接。
LOCAL lnHandle
lnHandle = SQLCONNECT(&MyNewDB&, &sa&, &admin&)
? &已成功创建数据库连接,连接句柄是:&, lnHandle
= SQLDISCONNECT(lnHandle)
例2:连接位于192.168.0.100的某台SQL Server上的MyNewDB数据库,,用户名是sa,密码是admin,使用SQLSTRINGCONNECT()函数创建数据库连接。
LOCAL lcConnStr, lnHandle
lcConnStr = &Driver=SQL SServer=192.168.0.100;& + ;
:Database=MyNewDB;UID=PWD=admin&
lnHandle = SQLSTRINGCONNECT(lcConnStr)
IF lnHandle & 0
= MESSAGEBOX(&数据库连接成功。&, 64, &提示信息&)
= SQLDISCONNECT(lnHandle)
= MESSAGEBOX(&数据库连接失败。&, 48, &提示信息&)
vfp如何向服务器取数据
在第一步建立和数据库的连接,并取得连接句柄nhandle后
sqlexec(jb,&select * from tablename&,&cursorname&)
vfp如何向服务器取数据
如向表employees查询性别为男的人员
在第一步建立和服务器数据库的连接,并取得连接句柄nhandle后
sqlexec(nhandle,&select * from employees where sex=’男’&,&employees&)
select employees
也可以调用系统上的来取得数据.
如在服务器建立存储过程
create proc getmanofworkes
select * from employees where sex=’男’
然后在vfp里调用
sqlexec(nhandle,&exec getmanofworkes&,employees)
select employees
当然也可以想存储过程传递参数查询
仍然以刚才的例子,查询不同性别的员工
在上建立create proc getemployees
@sex char(2)=’男’
select * from employees where sex=@sex
查询男员工
csex=’男’
sqlexec(nhandle,&exec getemployees ?sex&,’employees’)
select employees
查询女员工
csex=’女’
sqlexec(nhandle,&exec getemployees ?sex&,’employees’)
select employees
这时brow得到的cursor你会发现,虽然修改了表中的数据,但上并没有被更新.
这是因为spt得到的光标默认是可写但不可更新的。
设置本地表可更新服务器表
sqlexec(jb,&select id,bh,hyzhm,fzdw,rghsj,ghzrsj,xm,xb,gs_bm from rsda where lcbj=0 order by gbbh&,&gh&)
***设置gh可更新rsda表
cursorsetprop(&tables&,&rsda&,&gh&) &&设置临时表的更新目标表
cursorsetprop(&keyfieldlist&,’id’,&gh&) &&设置临时表的关键字
cursorsetprop(&updatablefieldlist&,&id,fzdw,rghsj,ghzrsj,hyzhm&,&gh&)&&设置临时表的更新字段
cursorsetprop(&updatenamelist&,&id rsda. id,hyzhm rsda.hyzhm,rghsj rsda.rghsj,ghzrsj rsda.ghzrsj,fzdw rsda.fzdw&,&gh&)
&&&用gh中的相应字段更新rsda表
cursorsetprop(&sendupdates&,.t.,&gh&)&&设置为可更新
cursorsetprop(&wheretype&,2)
cursorsetprop(&buffering&,5)&&设置表缓冲
顺便提一下,表缓冲必须有明确的tableupdate命令才能更新。
上面的功能都是通过本地的cursor来处理远程数据。spt还可以直接处理远程数据。
如将远程上的表rsda中,性别为男的,都改成女的。
sqlexec(nhandle,&update rsda set xb=’女’ where xb=’男’&)&&由于这句是更新命令,不需要返回一个,所以,第
三个参数,名可以省略不写。
由此也就可以举一反三的明白,如何调用远程来更新数据了。
如将上面的更新语句写成存储过程
在服务器上
create proc updatesex
update rsda set xb=’女’ where xb=’男’
sqlexec(jb,&exec updatesex&)&&调用存储过程,不需要返回光标,取消第三个参数
如何开始一个远程事务
它包含一个可的操作段。在sql server上在事务中的数据,并没有实际的写入数据库,而是将更新临时存储在
缓冲中,只有明确的发出了commit或者rollback tran才结束这个事务,将操作取消或者将操作实际写入。
每个事务以begin tran开始,以commit tran或者rollback tran结束。倘若在遗漏了commit tran或者rollback tran,在sql server就很容易的表现为等待状态,即死锁状态,在等待该事务的释放。
开始一个事务:
sqlexec(nhandle,&begin tran&)&&开始一个,事实上sqlexec()中的第二个参数中的操作都是被发送到sql server执行的。这样也就可以理解的一个优点,因为存储过程只要发送一个调用语句给,而如果将这些语句全部写在
VFP端,则带来的网络传送量必然很多,客户端越多,造成的可能就越大。回到事务上来。
sqlexec(nhandle,&insert into tablename values()&)
sqlexec(nhandle,&if @@error&&0&)
sqlexec(nhandle,&begin&)
sqlexec(nhandle,&rollback tran&)
sqlexec(nhandle,&return&)
sqlexec(nhandle,&end&)
sqlexec(nhandle,&delete from tablename where &)
sqlexec(nhandle,&if @@error&&0&)
sqlexec(nhandle,&rollback tran&)
sqlexec(nhandle,&else&)
sqlexec(nhandle,&commit tran&)
当然在vfp8中可以写成text endtext的形式更加直观
不过我个人感觉,有事务处理的处理还是最好写成过程。例在上建立过程
create proc procname
begin tran
insert into tablename values()
if @@error&&0
rollback tran
delete from tablename where
if @@error&&0
rollback tran
commit tran
在vfp端sqlexec(nhandle,&exec procname&)
当然也可以开启:
* 开始一个 VFP 事务处理和一个服务器上的事务处理.
nConnection=CursorGetProp(&ConnectHandle&,&mytable&)
SQLExec( nConnection, ‘BEGIN TRANSACTION’ )
* 更新修改到 MyTable.
lEverythingOK = Tableupdate( 2, .F., ‘mytable’ )
If lEverythingOK
* 更新修改到 MyOtherTab
企业信用信息VFP与ASP相结合开发Web&数据库应用
【娱乐休闲】
【生活服务】
【电脑网络】
【文体教育】
【行业部门】
文章浏览→→→VFP与ASP相结合开发Web&数据库应用VFP与ASP相结合开发Web&数据库应用
1&.&VFP&与Web&数&据&库&应&用&----&作&为&最&成&功&的&大&众&数&据&库,Foxpro&简&便&易&学,&有&广&大&的&用&户。&随&着VFP&5.0&的&推&出,VFP&已&经&成&为&一&个&强&大&的&企&业&级&开&发&工&具。&它&不&仅&可&以&开&发&文&件/&服&务&器(F/S)&数&据&库&应&用,&也&可&以&开&发C/S&应&用,&这&时VFP&作&为&一&个&前&端&工&具,&后&端&可&以&是SQL&Server,Sybase&等&数&据&库Engine。&通&过Remote&View&和SQL&Passthrough&函&数,VFP&可&以&像&操&作&本&地&数&据&一&样,&方&便&地&处&理&服&务&器&端&数&据。&----&在Internet/&Intranet&影&响&日&益&巨&大&的&今&天,&开&发Web&数&据&库&应&用&成&为&引&人&关&注&的&技&术。Web&数&据&库&应&用&有&一&个&天&然&的&多&层C/S&结&构。&在&这&个&结&构&中,&客&户&端(Client)&仅&由Browser&组&成,&几&乎&没&有&软&件&维&护&和&升&级&的&问&题。&来&自Client&的&请&求&发&送&到Web&Server,&我&们&只&须&开&发Web&Server&端&软&件,&处&理&请&求,&与&数&据&库&服&务&器&交&互、&并&把&结&果&返&回Client,&系&统&维&护&和&升&级&非&常&方&便。&只&要&允&许,&任&意&一&个&客&户&都&可&以&通&过Internet&或Intranet&访&问&我&们&的&数&据。&----&VFP&完&全&具&备&开&发Web&数&据&库&应&用&的&能&力。&不&过&有&意&思&的&是,&这&次VFP&被&推&到&了&后&台,&在&数&据&库&服&务&器&上&专&门&处&理&数&据&存&取&和&实&现&商&业&逻&辑。&数&据&库&服&务&器&和Web&Server&可&以&运&行&在&同&一&个&网&络&服&务&器&上,&或&者&运&行&在&由&高&速&通&道&连&接&的&两&台&网&络&服&务&器&上(&如NT&Server),&这&样&网&络&传&输&瓶&颈&不&再&存&在。&并&且&借&助NT&Server&的&安&全&管&理,&客&户&并&不&能&直&接&接&触VFP&数&据&库,&而&是&通&过Web&Server&存&取&数&据,VFP&数&据&库&的&安&全&特&性&得&以&大&大&提&高,&而&此&两&项&一&般&认&为&是VFP&的&重&要&弱&点。&2&.&ASP(Active&Server&Page)&与&VFP&的&组&件&技&术&----&Web&数&据&库&应&用&可&以&由CGI、ISAPI、IDC、ASP&等&实&现。&其&中ASP&的&功&能&最&为&强&大,&在&其&中&可&以&混&用HTML、DHTML、ActiveX、VBSsript&或JavaSript,&特&别&是&可&以&使&用&服&务&器&端&组&件。&此&服&务&器&端&组&件&可&以&用VFP、VB、VC++、Delphi&等&任&意&支&持COM&技&术&的&语&言&编&写,&以&实&现&用&户&特&定&的&商&业&逻&辑。&如&果&不&出&意&外,ASP&将&成&为&主&流&技&术。&目&前&有Microsoft&的IIS(Internet&Information&Server,NT&Server)&和PWS(Personel&Web&Server,Win95)&支&持ASP。&----&在&传&统&的F/S&或C/S&应&用&中,&组&件&作&为&面&向&对&象&的&编&程&风&格,&你&可&以&随&自&己&的&喜&好,&采&用&或&不&采&用&它。&然&而&在ASP&中&使&用VFP,&组&件(&一&个OLE&Server&DLL)&是&你&唯&一&的&选&择。&你&的&处&理&过&程&都&应&封&装&在&一&个&或&多&个&组&件&中。&3&.&使&用&的&环&境&和&工&具&----&对&于ASP&,&需&要WinNT&4.0(Service&Pack&3)、IIS&3.0(WinNT&自&带)、Visual&InterDev1.0&。&也&可&以&是:Win95、PWS(Visual&InterDev1.0&中&提&供)&、Visual&InterDev1.0。&----&为&了&使IIS&或&PWS&支&持ASP,&在&安&装Visual&InterDev&时&必&须&首&先&在&服&务&器&上&选&择&安&装&其&中&的Server&Components:FrontPage&Server&Extensions&和&Active&Server&Pages,&然&后&在&开&发&服&务&器&上&安&装Client&Components:Visual&InterDev&Client。&也&可&以&把&这&些&都&安&装&在&同&一&台&机&器&上,&这&样&可&以&在&单&机&上&方&便&地&编&程、&调&试。&4.&VFP&组&件&的&实&现&----&在VFP&中&开&始&一&个Project,&取&名&为Classes,&然&后&在&此Project&中&建&立&一&个Program,&取&名Classdef.prg。&它&定&义&了&一&个OneRecord&类,&其&功&能&是&一&条&条&显&示&一&个&数&据&库,&具&有&向&前、&向&后&和&定&位&能&力。&使&用&一&个DBF&文&件d:\vfpweb\data\booksno.dbf,&结&构&为:&Field_name&Field_type&Field_lenbookno&&C&&&16bookname&C&&&&50author&&C&&&&12editor&&C&&&14pubdate&&D&&&8charnum&&&N&&&4.0&在Classdef.prg&中&键&入&代&码:Define&class&onerecord&as&custom&olepublicmcDatapath=""*---------------------------function&getdatapathreturn&(this.mcdatapath)*---------------------------function&getcurrentnoreturn&recno()*---------------------------function&initset&exclu&offset&century&onset&date&to&ansireturn*---------------------------function&&setdatapathlparameter&cpathif&type("cpath")&&&&"C"&return&endifthis.mcdatapath=cpathset&defau&to&(cpath)if&not&used("booksno")select&0use&booksnoelseselect&booksnoendif&return*--------------------------function&movenextif&.not.eof()&skipendifreturn&*--------------------------function&movepreviousif&.not.bof()&skip&-1endifreturn*--------------------------function&destroyuse*clear&all&&&clear&all&将&挂&起&服&务&器return*--------------------------function&iseofif&eof()&return&.t.elsereturn&.f.endif*--------------------------function&&isbofif&bof()&return&.t.elsereturn&.f.endif*--------------------------function&getbooknoreturn&bookno*--------------------------function&getpubdateif&empty(pubdate)return&""elsereturn&pubdateendif*--------------------------function&geteditorreturn&editor*--------------------------function&getbooknamereturn&bookname*--------------------------function&gotolparameter&recnumif&type("recnum")&&&&"N"&&&&error&data&typereturnendifif&recnum&&1&.or.&recnum&&reccount()returnelsegoto&(recnum)endifreturnEndDefine----&在&菜&单Project,&选&中&Set&Main,&然&后Build&,&在Build&对&话&框&中&选Build&OLE&DLL。&好&了,&我&们&到&此&就&完&成&了&一&个OLE&Server,&并&且&它&已&经&自&动&注&册&在&我&们&的&机&器&上。&我&们&可&以&在&菜&单Project&│&Project&Info&弹&出&的Project&Information&对&话&框&中&看&到&这&个&组&件&的&信&息:&Server&Classes:onerecordProject&Name:ClassesOLE----&Server&的&引&用&方&法&是createobject("ProjectName.ClassName"),&对&于&我&们&这&个&组&件,&就&是:createobject("classes.onerecord")。&可&以&直&接&在VFP&的Command&窗&口&中&交&互&式&地&测&试&之,&在Command&窗&口&中&键&入:&ox=createobject("classes.onerecord")ox.setdatapath("d:\vfpweb\data")?ox.bookname?ox.getbooknameox.movenext?ox.getbooknameox.goto(30)?ox.getbookname----&可&以&直&接&看&到&执&行&结&果,&最&后&不&要&忘&了&释&放&该&组&件:&release&ox----&这&个&组&件&是&针&对&特&定&数&据&库&进&行&操&作&的,&测&试&很&方&便。&下&面,&我&们&再&实&现&一&个&更&为&一&般&的&类ClsQ2T,&其&功&能&是&任&意&指&定&一&条SQL&查&询&语&句(&针&对&任&意&一&个&或&多&个&数&据&库),&将&查&询&结&果&以&表&格&的&形&式&显&示&在Web&页&面&上,&其&中&使&用&了ASP&的&接&口。&它&不&仅&封&装&了&数&据&处&理,&而&且&通&过ASP&接&口,&也&封&装&了&数&据&显&示。&----&仍&在Classdef.prg&之&中,&接&着&最&后&一&行&代&码,&键&入:&***************************************************define&class&clsq2t&as&custom&olepublicmcontext=.null.*-----------------------------------------function&onstartpage(ocontext)this.mcontext=ocontext&&&对ASP接口的引用return*-----------------------------------------function&init&set&exclu&offset&safety&offreturn*---------------------------------------------function&setdatapath(strpath)merrnum=0on&error&merrnum=error(&)set&default&to&(strpath)if&merrnum&&&&0&return&"Error&in&setdatapath"+message()+chr(13)endifon&errorreturn&"OK,setdatapath"+strpath+chr(13)*-------------------------------------------------*函数querytotable要求传入一个SQL&Select串,如:*&"select&bookname,editor&from&booksno&where&charnum&&500"*&-------------------------------------------------function&querytotable(querystring)merrnum=0on&error&merrnum=error(&)oResp=this.mcontext.response&&&引用ASP对象responsetempname=SUBSTR(SYS(2015),&3,&10)&&&产生唯一的文件名&querystring&into&cursor&(tempname)if&merrnum&&&&0&return&"Error&in&querytotable,create&sql&view"+message()&&&&&&&+alltrim(str(lineno(&)))+chr(13)endifoutstring="&&table&border=1&&"+chr(13)+"&&tr&&"+chr(13)oresp.write(outstring)if&merrnum&&&&0&return&"Error&in&querytotable,oresp.write"+message()&&&&&&&&&+alltrim(str(lineno(&)))+chr(13)endifoutstring=""fc=fcount()for&i=1&to&fcif&type("eval_r(field(i))")="G"&&&loopendifoutstring=outstring+"&&td&&"+field(i)+"&&/td&&"+chr(13)nextoutstring=outstring+"&&/tr&&"+chr(13)oresp.write(outstring)outstring=""if&merrnum&&&&0&return&"error&in&oresp.write&header"+message()&&&&&&+alltrim(str(lineno(&)))+chr(13)endifscanoutstring=outstring+"&&tr&&"+chr(13)for&i=1&to&fc&&&if&type("eval_r(field(i))")="G"&&&&loop&&endif&&mt=eval_r(field(i))&&do&case&&&case&type("mt")="C"&&&&outstring=outstring+"&&td&&"+mt+"&&/td&&"&&&case&type("mt")="T"&&&&outstring=outstring+"&&td&&"+ttoc(mt)+"&&/td&&"&&&case&type("mt")="D"&&&&outstring=outstring+"&&td&&"+dtoc(mt)+"&&/td&&"&&&&case&type("mt")$"NY"&&&&outstring=outstring+"&&td&&"+alltrim(str(mt,5))+"&&/td&&"&&endcase&&outstrin=outstring+chr(13)next&outstring=outstring+"&&/tr&&"+chr(13)endscanoresp.write(outstring)outstring="&&/table&&"oresp.write(outstring)useon&errorreturn&"OK&of&querytotable,&ended"+chr(13)endfuncEndDefine----&键&入&代&码&后Build&,&在Build&对&话&框&中&仍&选Build&OLE&DLL,&在&确&认&覆&盖&时&选&择"Y",&在Project&Information&对&话&框&中&看&到&这&个&组&件&的&信&息&已&有&变&化:&Server&Classes:onerecord&clsq2t&Project&Name:Classes----&加&上&了&新&增&的clsq2t。&----&这&段&代&码&中&较&特&别&的&是onstartpage(ocontext),&它&在&每&次.asp&页&面&启&动&时&由IIS&自&动&调&用,&并&传&入&一&个&参&数。&该&参&数&是&对ASP&的&一&个&容&器ScriptingContext&的&引&用,&通&过&它&可&以&引&用ASP&的&所&有&内&在&对&象(Intrinsic&Object),&如response、reuqest。&通&过&这&些&内&在&对&象,VFP&可&以&直&接&读&取&用&户&在Web&页&面&上&的&输&入,&也&可&以&把&结&果&直&接&写&回Web&页&面。&----&组&件clsq2t&的&调&试&要&困&难&得&多。&可&以&在&函&数querytotable&中&注&释&掉&与oResp&有&关&的&行&以&及define&class&clsq2t&as&custom&olepublic&和&EndDefine&两&行,&然&后&增&加&一&些&代&码&直&接&调&用&各&个&函&数,&以&进&行&调&试&排&错。&确&认&无&误&后&再&恢&复&上&述&各&行,&并&重&新&Build。&5.&在ASP&中&使&用VFP&组&件&----&下&面&将&建&立&两&个ASP&页&面:Onerecord.asp&和Clsq2t.asp&测&试&我&们&完&成&的&这&两&个&组&件。&启&动Visual&InterDev,&开&始&一&个&新&的&工&程:New&Projects,&然&后&选&取Web&Project&Wizard&,&在Project&Name&中&输&入VFPClasses,&点&击OK&后,Visual&InterDev&产&生&一&些&辅&助&文&件,&为&新&的&工&程&做&好&准&备,&然&后&打&开&该&工&程。&我&们&在&该&工&程&中&首&先&建&立&一&个HTML&页&面index.htm,&以&调&用&上&述&两&个ASP&页&面。&点&击&菜&单File&│&New,&在New&对&话&框&中&选Files&│&HTML&Page,&并&指&定HTML&页&面&的&名&字:index.htm。Visual&InterDev&将&会&为&我&们&产&生&一&个&空&的&框&架,&在&其&中&用&手&工&加&入&代&码,&也&可&用Visual&InterDev&附&带&的FrontPage&Editor&等&可&视&化&工&具&编&辑&代&码,&完&成&后&的HTML&页&面&如&下:&&&HTML&&&&HEAD&&&&/HEAD&&&&BODY&&&&p&&&&a&href="/program/vfp/Onerecord.asp"&&To&scan&the&records&&/a&&&&&&&&&&&&/p&&&&p&&To&send&a&query:&&br&&&&form&action="Clsq2t.asp"&method="post"&name="input"&&&&input&type="submit"&name="Btoquery"&value="Query"&&&&input&&&type="text"&size="40"&name="qstring"&&&&&&&&&&&&value="Input&a&query&here"&&&&&/p&&&&/form&&&&/BODY&&&&/HTML&&----&index.htm&中&包&括&一&个&到Onerecord.asp&的&超&联&接、&一&个Text&用&于&输&入&查&询&语&句、&一&个Submit&Button&用&于&提&交&查&询,&点&击&该Button&后&将&调&用Clsq2t.asp。&----&点&击&菜&单File&│&New&,&在New&对&话&框&中&选Files&│&Active&Server&Page,&新&建Onerecord.asp,&它&使&用onerecord&组&件&在Web&页&面&上&浏&览&数&据&库,&代&码&如&下:&&&%@&LANGUAGE="VBSCRIPT"&%&&&&html&&&&HEAD&&&&/HEAD&&&&BODY&&&&FORM&ACTION="Onerecord.asp"&METHOD="POST"&ID="scanform"&&&&%set&ox=server.createobject("classes.onerecord")ox.setdatapath("d:\vfpweb\data")if&session("currentno")=""&thensession("currentno")=1’first&time&open&the&pagecurrentno=1elseif&isnumeric(session("currentno"))&then&&currentno=session("currentno")else&&currentno=1end&ifend&ifox.goto(currentno)%&&&&%if&request.form("cmdnext")&&&&""&thenox.movenextend&if%&&&&%if&request.form("cmdprev")&&&&""&thenox.movepreviousend&if%&&&&%if&isnumeric(request.form("txtgoto"))&thentemp=cint(request.form("txtgoto"))ox.goto(temp)end&if%&&&&%session("currentno")=ox.getcurrentno%&&&&p&&当前记录:&&%=ox.getcurrentno%&&&&br&&书&&号:&&%=ox.getbookno%&&&&br&&书&&名:&&%=ox.getbookname%&&&&br&&责&&编:&&%=ox.geteditor%&&&&br&&出版时间:&&%=ox.getpubdate%&&&&br&&&&/p&&&&p&&&&%if&not&ox.iseof&then’如果不是文件未则显示按钮Next%&&&&INPUT&TYPE=submit&VALUE="Next"&NAME="cmdnext"&&&&%end&if%&&&&&%if&not&ox.isbof&then’如果不是文件头则显示按钮Prev%&&&&INPUT&TYPE=submit&VALUE="Prev"&NAME="cmdprev"&&&&%end&if%&&&&%set&ox=nothing%&&&&INPUT&LANGUAGE="VBScript"&TYPE=submit&&&&&&&&&&&&VALUE="Goto"&ONCLICK="if&not&isnumeric(scanform.txtgoto.value)&thenwindow.alert("Must&input&a&number")window.event.cancelbubble=trueend&if"NAME="cmdgoto"&&&&INPUT&TYPE=text&SIZE=20&NAME="txtgoto"&&&&/p&&&&a&href=index.htm&&&Return&Index&&/a&&&&/FORM&&&&/BODY&&&&/HTML&&----&该&页&面&显&示&数&据&库&当&前&记&录&各&字&段&的&值,&并&在&页&面&下&方&显&示&三&个&按&钮Next(&下&一&条),Prev(&上&一&条)&和Goto。&其&中&使&用&了Server&Side&Code(&符&号&&%&和%&&&之&间&的&代&码,&在&服&务&器&端&执&行),&产&生&组&件&及&对&组&件&各&方&法&和&属&性&的&调&用;Client&Side&Code(&在&客&户&端&执&行),&在ONCLICK&的&事&件&响&应&中&检&验&用&户&输&入&的&记&录&号(&必&须&是&一&个&数&字)。&由&于Web&Browser&基&于&的HTTP&是&一&个&无&状&态&协&议,&它&并&不&知&道&各&客&户&的&当&前&记&录。&为&了&在&各&个&页&面&调&用&中&记&住&当&前&记&录&号,&使&用&了session&对&象。session&对&象&在&跟&踪&和&保&持&客&户&的&使&用&状&态&上&很&有&用&处,&感&兴&趣&者&可&以&查&阅Visual&InterDev&的&联&机&帮&助。&----&再&新&建Clsq2t.asp&,&它&使&用&使&用clsq2t&组&件&在Web&页&面&上&显&示&任&意&查&寻&结&果,&代&码&如&下:&&&%@&LANGUAGE="VBSCRIPT"&%&&&&HTML&&&&HEAD&&&&/HEAD&&&&BODY&&&&%qs=request.form("qstring")%&&你输入的查询要求是:&&&br&&&&%=qs%&&&&hr&&&&a&href=index.htm&&&Return&Index&&/a&&&&br&&&&%set&ox=Server.CreateObject("classes.clsq2t")%&&&&%ox.SetDataPath("d:\vfpweb\data")%&&&&%ox.QueryToTable(qs)%&&&&%Set&ox&=&Nothing%&&&&/BODY&&&&/HTML&&----&由&于&输&出&操&作&都&已&封&装&在&组&件clsq2t&之&中,&故&该&组&件&的&使&用&相&当&简&明。&应&该&指&出&的&是,&该&组&件&应&该&用&于&开&发&之&中,&而&不&应&提&供&给&最&终&用&户,&因&为&不&能&保&证&用&户&输&入&的SQL&Select&串&的&有&效&和&合&法。&6.&调&试&注&意&事&项&----&此&处&两&个&组&件&皆&是&进&程&内&服&务&器,&当&有Bug&时&将&会&使&系&统&挂&起&甚&至&崩&溃。&----&当&修&改&组&件&代&码&时,&你&会&发&现&无&法&覆&盖&老&的.dll&文&件。&这&是&因&为&即&使&退&出Visual&InterDev,&组&件&仍&被Web&Server&锁&定(&这&就&是&为&什&么VFP&试&图&用clear&all&释&放&资&源&时&会&挂&起&服&务&器)。&这&时&必&须&停&止Web&Server&并&再&启&动&之,&在&开&发&过&程&中&可&能&要&如&此&反&复&多&次。&如&果&系&统&被&挂&起&或&崩&溃,Web&Server&无&法&响&应,&这&时&只&有&使&出&最&后&一&招:&关&机&并&重&新&启&动。VFP&5.0&版&本&的Run&Time&Library&只&支&持&一&个&实&例,&就&是&说:&如&果&上&述&两&个&组&件&在&两&个&不&同&的prg&文&件&中&实&现,&则&它&们&不&能&同&时&被&使&用。&这&一&点&在VFP6.0&中&已&得&到&改&进(&但&仍&是&单&线&程&的)。&7.&评&述&----&Web&数&据&库&开&发&更&专&业&化&的&方&法&似&乎&是ASP+VB+ADO(ActiveX&Data&Object)+SQLServer。&其&中ADO&不&仅&可&用&于Web&数&据&库&开&发,&也&可&用&在VB、VFP&中&替&代DAO、RDO&开&发&传&统&的C/S&应&用,&功&能&更&为&强&大。&然&而&对&于&中&小&企&业&来&说,VFP&简&便&易&用,&对&资&源&要&求&不&高,&而&且&我&国&很&多&高&校&学&生&都&学&习&过Foxbase&或Foxpro,&他&们&可&以&很&快&掌&握Visual&Foxpro,&故&可&以&比&较&容&易&地&找&到&编&程&和&系&统&维&护&人&才。VFP&用&于&开&发Internet/Intranet&是&一&个&较&好&的&选&择,&国&外&已&有&许&多&大&型&应&用&的&成&功&凡&例。所属分类:→&&&&作者:新浪博客&&&&时间: 0:00:00
All Right Reserved}

我要回帖

更多关于 vfp建立数据库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信