foxpro取得离线视图
文章作者 100test 发表时间 2007:03:10 18:21:51
来源 100Test.Com百考试题网
获取离线视图是简单的:确信包含了视图定义的数据库是当前数据库并使用新的 createoffline() 函数。语法如下:
createoffline( [, ])
是离线视图的名字。任何视图都可以离线;你不用特别定义一个视图作为“离线表”。
选项 是要建立的DBF的目录和文件名。如果你未指定, VFP 将在当前目录中建立一个与视图同名的表(例如, 如果视图名字是LV_CUSTOMER, 表名将是LV_CUSTOMER.DBF)。
注意VFP 文档中关于该参数的描述是错误的. 它规定你只能为该表指定一个目录, 但实际上你也可以指定名字 (尽管扩展名不是必须的)。
如果视图成功的离线,createoffline() 返回.T.。
如果视图已经离线,如果你使用了第二个参数而又未指定文件名, 如果视图表或支持性表缓存文件已经存在 (该行为有望在将来的版本中得到改变;依我看来, 它不会妨害set safety), 或源表不能打开,则返回 .F.。
以下是该函数的一个例子:
llSuccess = createoffline( LV_CUSTOMER , OFFLINE\LV_CUSTOMER )
该例试图让LV_CUSTOMER 视图离线并在当前目录下的OFFLINE子目录中建立一个叫LV_CUSTOMER.DBF 的表。
这里是关于生成离线视图的其它要注意的事:
- createoffline() 打开视图所基于的表而不是视图本身。
- 如果视图离线,dbgetprop(, View , Offline ) 返回.T.。
- VFP 5.0 (包括5.0a) 有一个bug:如果 createoffline() 返回.F., 指明视图因某种原因而未能离线, dbgetprop(, View , Offline ) 出乎意料的返回.T.。0dropoffline()也不会正常工作; 它返回.F。指明视图不能离线, 而且即使它确实已经不是离线视图, dbgetprop(, View , Offline ) 继续返回.T., 然而. 在视图联线模式或管理模式下打开视图将会得到一条 "对象不是一个离线视图" 错误。幸运的是, 如果你解决该问题而致使createoffline() 失败, 你可以再次使用它来让视图离线.