VFP(Vector Floating-point Coprocessor for ARM)向量浮点运算单元(协处理器)
  VFP除了提供浮点数基本运算(加、减、乘、除、开方、比较、取反)提供支持之外,最有特点是它向量(vectors)功能。它同时支持最多8组单精度4组双精度浮点数的运算。有关这部分的叙述请参考<<ARM Architecture Reference Manual>> Chapter C5 VFP概念
  FoxBase采用命令行方式(为了和当时流行的数据库软件dBase兼容……)但是速度比当时其他的数据库软件要快。
  由于其为32位的数据库开发系统且具有良好的跨平台特性,它可以运行于Windows95/98/2000/XP/Visita/7等操作系统之上。
编辑本段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提供了一些函数用于在X
ML数据和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在其他微小的细节上进行了不少的改进,使得开发者的体验更加舒适。
  微软已经于,2007年前后,宣布 Visual Foxpro 停止研发,VFP9 是最后一个官方版本。微软在曾经2007年3月份的时候声称,将会对 Visual Foxpro 开放源代码到,其代码共享社区站点CodePlex上,但是截止到2010年4月,在CodePlex似乎似然搜索不到Visual Foxpro的源代码。
  至此,我们可以遗憾的发现,Visual Foxpro 已经完全失去主流研发支持了。
编辑本段vfp正确使用SPT详解
  SPT的全称为SQL Pass-Through,它和远程视图(Remote View)、CA(CursorAdapter,VFP8及后序版本支持)共同构成了VFP实现数据库操作的利器。远程视图及CA实质上都是基于SPT技术,与它们相比,SPT要更为灵活,它可以直接创建数据库接连,执行数据库原生SQL语句,并可以获取临时表(Cursor),通过设置能使对临时表的更改更新到数据库表中。SPT的缺点是不面向对象、代码量大。
1. 与数据库建立连接
  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 Server;Server=192.168.0.100;" + ;
  :Database=MyNewDB;UID=sa;PWD=admin"
  lnHandle = SQLSTRINGCONNECT(lcConnStr)
sql语句查询结果取反  IF lnHandle > 0
  = MESSAGEBOX("数据库连接成功。", 64, "提示信息")
  = SQLDISCONNECT(lnHandle)
  ELSE
  = MESSAGEBOX("数据库连接失败。", 48, "提示信息")
  ENDIF
2. 如何向服务器取数据
  在第一步建立和服务器数据库的连接,并取得连接句柄nhandle后
  sqlexec(jb,"select * from tablename","cursorname")
3. 如何向服务器取数据
  如向服务器表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,hsj,ghzrsj rsda.ghzrsj,fzdw rsda.fzdw","gh")
  &&&用gh中的相应字段更新rsda表
  cursorsetprop("sendupdates",.t.,"gh")&&设置为可更新

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。