这个问题一直困绕着我,在一个表单中,因为要用到很多个表,可当我用“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 事件关闭本表单打开的表
------解决方案--------------------------------------------------------