标题:表格怎么有时不能加载?
取消只看楼主
林森
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-13
 问题点数:0 回复次数:2 
表格怎么有时不能加载?
在表单中设置了数据环境,并将数据环境中的表托到表单上,成为一个grid,但在运行表单时,有时grid中空白一片,在VFP6.0、VFP9.0中都偶尔出现这现象,也换过机器试验。哪位高手遇到过这情况?怎么解决?(我的数据表字段多一点,有53个字段)
搜索更多相关主题的帖子: 加载 表格 grid 表单 环境 
2007-03-08 17:45
林森
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-13
得分:0 
关键问题是这种情况偶尔发生,所以才
2007-03-09 20:38
林森
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-5-13
得分:0 

jockey说得有道理, http://www.cnblogs.com/zhenyulu/articles/28418.html这里谈到一点此问题

三、逻辑删除与物理删除

逻辑删除是VFP的特色,很多人对此也有看法。逻辑删除乍一看就象回收站,误删除的记录还可以还原回来,确认不需要的再清空。可也有很多VFP编程人员养成了一个习惯,就是DELETE后立即PACK,凭什么删除还犹豫呢?可他们很快就发现,PACK命令似乎总和他们作对,有时一PACK,窗口上的网格控件只剩下白板一块,什么都没有了,有时执行PACK会报错,说“必须以独占方式打开表”,反正总是不顺。为什么会这样呢?


话又转到“记录号”上来了。假设我们要删除年龄为22的记录,因为VFP将记录号做“主键”来用,若VFP直接执行物理删除的话,那么当第三条记录从磁盘上清理掉后,原来记录号为 4 的记录就变成了记录号为 3 的记录(物理顺序变了),在这个时候,如果另外一个用户更新了原有记录号为 3 的记录并进行提交,就会误修改原来记录号为 4 (现在记录号为 3)的记录。VFP为了防止这种共享冲突,添加了两个限制:一是先逻辑删除再物理删除,二是物理删除时必须以独占方式打开表。这样的话,用户执行逻辑删除仅仅是在记录上加一个删除标识,不会从磁盘文件中真正删除,也就不会改变记录号,所以可以避免并发冲突。当用户想真正物理删除数据时,必须以独占方式打开表,以确保没有其他人正在使用数据库,便不会产生共享问题了。


此外,VFP为了让用户感觉不到逻辑删除记录的存在,保留了SET DELETE ON、SET DELETE OFF设置,力争将逻辑删除带来的影响减少到最小。但怎么可能呢?有谁会注意到在SET DELETE OFF时使用“SELECT * FROM STUDENT”命令需要加上条件“WHERE NOT DELETED()”以排除逻辑删除的记录呢?甚至通过“SELECT COUNT(*) FROM STUDENT”统计学生人数时,DELETE状态也会影响检索结果!


由此可见很多麻烦都是“记录号”惹的祸,也可以看出VFP在这里的良苦用心。

2007-03-09 21:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-123126-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.205198 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved