永发信息网

VF是什么?

答案:1  悬赏:40  手机版
解决时间 2021-03-05 20:39
VF是什么?
最佳答案
Visual FoxPro ,是Microsoft公司从Fox公司的FoxBase数据库软件经过数次改良,并且移植到Windows之后,得来的应用程序开发软件,主要用于开发数据管理与运算等方面的软件。
  FoxBase采用命令行方式(为了和当时流行的数据库软件dBase兼容……)但是速度比当时其他的数据库软件要快。
  VFP是Microsoft公司推出的最新可视化数据库管理系统平台,是功能特别强大的32位数据库管理系统。它提供了功能完备的工具、极其友好的用户界面、简单的数据存取方式、独一无二的跨平台技术,交肯有良好的兼容性、真正的可编译性和较强的安全性,是目前最快捷、最实用的数据库管理系统软件之一。
  Visual FoxPro成长之路
  Visual FoxPro(以下简称VFP)是个不断成长的小伙,承蒙Visual Studio(以下简称VS)的关照,VFP在开发者心目中一直是和VB、VC地位相同的工具语言,只不过它并不是通用开发工具,而只是专注于数据库应用的开发。
  然而,吊足大家胃口的VS.NET终于出现在开发者面前时,竟不见了VFP的身影,着实引起开发社区的一阵骚动。微软不要VFP了?不是,恰恰相反,VFP忍受不了VS缓慢的升级速度,“单干”了。现在的VFP已经升级到版本9,并且完全支持.NET技术。
  以下让我们来一起关注一下VFP的成长之路,看看每次升级VFP都为我们带来了那些诱人的新特性。当然,我们只整理了VFP 6.0以后的版本,也就是VFP 7、8、9。这些内容来自MSDN Library Online,我们仅参考每个版本VFP产品文档中的“What’s New”部分进行整理。
  VFP 7
  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数据。
  VFP 8
  n 数据特性增强 VFP 8对其数据特性进行了改进,并增加了很多新的数据特性,包括:远程数据连接、创建DataEnvironment类、自动增长域值、支持对照序列、与SQL语句Select…Union之间的隐式数据转换、使用SQL Select命令插入行等;
  其他增强 VFP 8对一些工具、示例数据库和解决方案案例都进行了改进。
  VFP 9
  数据和XML增强 这一时期的VFP对其数据特性进行了巨大的加强,改进项目之多真是令人眼花缭乱,详情可以参考这里,此处不再赘述;
  实现SQL语言 VFP 9已经能够充分地支持SQL查询语言;
  设计器的增强 VFP 9增强了这些设计器:报表和标签设计器、菜单设计器、表格设计器、查询和视图设计器、数据环境设计器以及类和窗体设计器等;
  其他方面的增强 和VFP 8一样,VFP 9在其他微小的细节上进行了不少的改进,使得开发者的体验更加舒适。
  当然,上面提到的只是每次版本更新时所带来的新特性的冰山一角,另外没有提到的是IDE(在VFP里是Interactive Development Environment)和语言的增强,这是每次版本更新都会有所改进而且是大幅改进的,相信个中感受只有铁杆Foxer能够体会得到了。尽管这里所列的改进看上去甚少,但在MSDN Library Online上却占去了巨大的篇幅,有兴趣的朋友不妨到MSDN上浏览一下,就能深刻体会到为什么VFP不会死,而且还能茁壮成长了。
  vfp正确使用spt详解
  spt的全称为sql pass through,它是和远程视图构成了vfp处理远程数据的利器。和远程视图比较,它的主要好处在于灵活,可以直接连接远程数据库,并在服务器上执行代码代码,当然它也可以和远程视图一样,通过一个光标cursor来更新远程数据,缺点主要是非图形化,代码量大。实际上远程视图是SPT的一个子集。
  步骤:
  1、建立连接,或者连接句柄
  如连接服务器为aa,用户名为bb,密码为cc,数据库为dd
  nhandle=sqlstringconnect("driver=sql server;server=aa;uid=bb;pwd=cc;database=dd")
  if nhandle>0
  messagebox("数据库连接成功!",0,"提示")
  else
  messagebox("数据库连接成功!",0,"提示")
  endif
  2、如何向服务器取数据
  在第一步建立和服务器数据库的连接,并取得连接句柄nhandle后
  sqlexec(jb,"select * from tablename","cursorname")
  2、如何向服务器取数据
  如向服务器表employees查询性别为男的人员
  在第一步建立和服务器数据库的连接,并取得连接句柄nhandle后
  sqlexec(nhandle,"select * from employees where sex=’男’","employees")
  select employees
  brow
  也可以调用系统上的存储过程来取得数据.
  如在服务器建立存储过程
  create proc getmanofworkes
  as
  select * from employees where sex=’男’
  go
  然后在vfp里调用
  sqlexec(nhandle,"exec getmanofworkes",employees)
  select employees
  brow
  当然也可以想存储过程传递参数查询
  仍然以刚才的例子,查询不同性别的员工
  在服务器上建立create proc getemployees
  @sex char(2)=’男’
  as
  select * from employees where sex=@sex
  go
  vfp里调用
  查询男员工
  csex=’男’
  sqlexec(nhandle,"exec getemployees ?sex",’employees’)
  select employees
  brow
  查询女员工
  csex=’女’
  sqlexec(nhandle,"exec getemployees ?sex",’employees’)
  select employees
  brow
  这时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表
  sele gh
  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
  as
  update rsda set xb=’女’ where xb=’男’
  go
  vfp调用
  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
  as
  begin tran
  insert into tablename values()
  if @@error<>0
  begin
  rollback tran
  return
  end
  delete from tablename where
  if @@error<>0
  rollback tran
  else
  commit tran
  在vfp端sqlexec(nhandle,"exec procname")
  当然也可以开启服务器事务:
  * 开始一个 VFP 事务处理和一个服务器上的事务处理.
  nConnection=CursorGetProp("ConnectHandle","mytable")
  SQLExec( nConnection, ‘BEGIN TRANSACTION’ )
  * 更新修改到 MyTable.
  lEverythingOK = Tableupdate( 2, .F., ‘mytable’ )
  If lEverythingOK
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
二轮摩托在高速公路上能行多少公里?
后埔村民委员会怎么去啊,有知道地址的么
丨1980年阴历的3月16是阳历的几月几号
以我们今天的幸福生活来之不易为开头。写一段
王安石在《书湖阴先生壁》中巧用拟人,化静为
求谍影重重1、2、3国语版的种子,跪谢
甲公司2013年度财务报表于2014年4月20日经董
碧浪温泉桑拿中心在什么地方啊,我要过去处理
下列生物均是利用现代生物技术培育成的,其中
忘乎所以的“忘”是什么意思
每次点word时老是打开,窗口出现问题发送和不
孕晚期牙龈肿痛吃什么
2010年2月3日 十一届人大五次会议在杭州隆重
伟业铝材我想知道这个在什么地方
乱刻乱画用英语怎么说
推荐资讯
博野县程委镇宋村村民委员会怎么去啊,有知道
地球上适合生物生活的地方称为,它是地球上所
和丰印刷包装机械公司地址有知道的么?有点事
乐一面地址有知道的么?有点事想过去
信用卡50000差2天还款滞纳金多少?
我是长卷发穿休闲衣服该扎什么发型
什么是高压,低压和安全电压
邵阳学院挂科留级问题
DOTA从比较古老的版本到现在每个版本有的所有
闵康口腔门诊部我想知道这个在什么地方
在核算的基本方法上具有明显特点的是() A。
十二星座学习成绩排名第一
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?