当前位置: 代码迷 >> VFP >> 有很多表要在一个表单中打开,怎么打开表?怎样以独站方式删除纪录
  详细解决方案

有很多表要在一个表单中打开,怎么打开表?怎样以独站方式删除纪录

热度:6230   发布时间:2013-02-26 00:00:00.0
有很多表要在一个表单中打开,怎样打开表?怎样以独站方式删除纪录?
这个问题一直困绕着我,在一个表单中,因为要用到很多个表,可当我用“SELE 表。。。” 这命令打开表时,怎么老说我找不到别名?再有就是当要删除一个表中的纪录时,我用USE打开表,用PACK删除时,怎么总说要以独站方式打开?可我用use 表 in 0 exclusive 这样的命令打开PACK,又说表在使用,怎样才能用PACK删除纪录啊?为什么用SELE *.DBF 打开说找不到别名?可有些用这样打开又可以?有很多表打开用什么语句打开为好?
  请各位老师指点指点

------解决方案--------------------------------------------------------
1. select 是选择工作区,不是打开表
2. 如果只是单机版本,只要主程序开头 set exclusive on 即可,delete 后立即 pack;如果要考虑表共享使用,就不能 pack,一定要 pack,只能在表单 destroy 前试试能否独占打开,能再 pack
3. select aaa.dbf,没有这种用法
4. 如果一个表已经共享 use 了,没关闭前不能再独占打开;要多次打开同一个表,必须加关键字 again
5. 你基本概念上的错误太多了,一俩句话说不清

------解决方案--------------------------------------------------------
假设现在有3个数据表,表名分别为表1.DBF、表2.DBF、表3.DBF。分别将这三个表加入表单的数据环境中,在数据环境中,用右键单击数据表的表名栏,在弹出的菜单中选择属性,在数据表的属性窗口中分别选择游标CURSOR1、CURSOR2、CURSOR3,设置EXCLUSIVE=.T.。这样在PACK时就不会提示“独占方式”的问题。
*--- 示例
SELECT 表1
DELETE RECORD RECNO()
PACK
*--- 转换工作区到表2,就不会提示“表在使用”
SELECT 表2

------解决方案--------------------------------------------------------
不用表单数据环境。

在表单的 Load 事件中打你本表单要用到的所有表。
Close Databases All
Use 表1 Exclusive In 0
Use 表2 Exclusive In 0
。。。。。。
Use 表N Exclusive In 0

用到哪表时先 Select 表名,不带扩展名。

最后在表单的 Unload 事件关闭本表单打开的表
------解决方案--------------------------------------------------------
探讨
不用表单数据环境。

在表单的 Load 事件中打你本表单要用到的所有表。
Close Databases All
Use 表1 Exclusive In 0
Use 表2 Exclusive In 0
。。。。。。
Use 表N Exclusive In 0

用到哪表时先 Select 表名,不带扩展名。

最后在表单的 Unload 事件关闭本表单打开的表
  相关解决方案