注册 登录
编程论坛 VFP论坛

如何避免VFP9的DBF表损坏 ?

asis 发布于 2022-12-09 16:17, 989 次点击
    原来有一个VFP6做的程序,现在想直接用VFP9来编译运行。以前在VFP6中都是用本地DBF表做表格录入或数据处理的临时工作表,一般在表单LOAD事件中打开,退出表单时关闭。一直很稳定,这些DBF表几乎没有损坏过。

    但用VFP9运行后,如果程序运行中出错中断或意外断电等几乎100%这些打开着的DBF表都会损坏,无奈我在进入表单前先把这些DBF表用副本拷贝一遍再打开。请问如何避免此类情况发生?

    如果在表单的LOAD事件建立一个Cursor表来代替本地DBF表做临时工作表的话,这种表与DBF表在操作上有什么区别?是否每次REPL替换后都要用=tableupdate(.t.)写盘?谢谢!

[此贴子已经被作者于2022-12-9 16:20编辑过]

6 回复
#2
gs25367856782022-12-09 16:22
我的认识是这样的,VFP的DBF表,在操作的时候
第一,先复出一个镜象表
然后对这个镜象表操作
第二,表打开以后需要及时关闭,要经常使用
close table all
语句。
第三,重要的BDF表需要另存为EXCEL文件,留存。

朋友你说:
一般在表单LOAD事件中打开,退出表单时关闭
我:使用时打开,用过就关闭。

曾经看到过有大师的作品中,按钮代码开头总有一句
close table all
很有道理
不过我把这句话放到了按钮代码的最后。

[此贴子已经被作者于2022-12-9 16:26编辑过]

#3
asis2022-12-09 16:30
回复gs2536785678:
   是这样,我表单中有一个Grid表格控件,数据源我指定的是本地DBF表,供用户录入数据,所以这个DBF表在表单关闭前一直是打开着的。没法及时关闭。另外DBF表我用独占方式打开,可以进行一些需要独占的操作。而Cursor表在有些方面不如操作DBF表方便。
#4
星光悠蓝2022-12-09 17:10
采用数据库,不直接操作表,可以通过视图或其他方式修改和提交更新
#5
吹水佬2022-12-09 17:36
可以在临时表编辑,确定保存时再更新原始表。
#6
zhken2022-12-09 18:56
损坏是不可避免的。对于重要的要经常备份,十分重要的还要保存在云端,防止天灾是吧。我的程序是每次退出都会备份一次没有备份的新记录,这样的损失降到最低
#7
laowan0012022-12-09 20:21
虽然我不用本地表,所有数据都保存在服务器的sqlserver数据库中,每次用的时候先从服务器调入数据,需要更新或新增时更新远程数据库,更新完成就断开
很久以前用过本地表,也是上面的思路,就算断电也不怕
1