我在vfp9中的一个表单上有一个网格控件。我有一个删除(带打包的)当前记录的按钮。在我删除记录后,网格找不到该资源。它只保留一个空的矩形。我做了这样的东西:DELETE ALL PACK GO TOP thisform.grid1.Refresh
,但没有效果。提前谢谢。
发布于 2012-05-26 20:12:13
就像Tamar提到的..。pack在日常活动中真的很糟糕。然而,有一个“设置”可以通过所有正常操作为您“隐藏”记录,直到夜间处理的管理任务永久删除记录...
SET DELETED ON
SET DELETED OFF通过打开"ON“(并且只需要在整个应用程序中执行一次,除非您正在处理处理私有数据会话的表单,否则也需要在那里执行。SET DELETED ON告诉VFP隐藏任何标记为删除的记录,这样它们就不会弄乱屏幕。它还使它们对任何类型的SQL查询都是隐藏的,因此您不会将记录标记为删除。
通过将DELETED OFF设置为OFF,将关闭隐藏并允许您重新查看任何/所有已删除的记录。这是为了防止您意外地将一条记录标记为删除,并需要“召回”它(取消删除)。
现在,所有的话都说了。如果您将记录标记为删除,例如在查找条件后设置筛选器,执行全部删除、打包,这是不好的…
在按钮的单击事件中需要做的就是
DELETE
Thisform.YourGridObject.Refresh()并且应该从列表中直观地删除该记录。当你发布一个包时,它实际上关闭了表,因此从网格中解绑了自己,删除了所有删除的记录,然后通过清理后的版本重新打开自己,但不会自动将自己重新绑定到网格。
发布于 2012-05-26 04:33:06
问题是,您正在重新创建网格的RecordSource,而它并不喜欢这样。如果不知道你在做什么,就很难给出具体的建议。然而,在正常的应用程序活动中打包一个表通常被认为是不好的形式。通常,PACK是为在非工作时间运行的管理代码保留的,因为它需要独占访问表。
你在这里的目标是什么?为什么要删除网格所基于的表中的所有记录?
添马舰
发布于 2012-05-28 06:58:25
VFP网格讨厌这样修改记录源。
您需要断开您的网格记录源(即,将其设置为""),执行您的操作,然后重置记录源并刷新。
https://stackoverflow.com/questions/10759648
复制相似问题