VFP中如何清除DBF文件中的0

VFP中如何清除DBF文件中的0,第1张

不止是输入了0,如果按了DELETE
键删除空白,也会显示0000。这个问题我也很恼火。
1我也只能变相解决一下,就是在设计的时候不用原来的文件,而是建一个临时表,把原来的数据文件中非0的值才导入。
2但如果在应用时输入了0或删除,还是会出问题。如果一定不让0出现,只好把表格控件设为只读,要输入的话,增添文本框控件,在文本框中输入,如果输入为0则不更新。
3最后的问题就是,如果错输了数据,应该为0不需输入,却输入了非0数据,结果不能改为0了。解决办法是,将当前表数据再拷入另一临时表,将当前表数据全删除,再从临时表中拷回来,当然还要屏蔽0数据。
虽然复杂了一点,但毕竟还是能解决问题。
还有个方法的思路,只是自己还未付诸实行。你可以试一下。
thisformMyGrid1SetAll('dynamicforecolor',rgb(255,255,255),‘column')

delete - sql 命令
给要删除的记录做标记。
语法
DELETE FROM [DatabaseName!]TableName
[WHERE FilterCondition1 [AND | OR FilterCondition2 ]]
参数
FROM [DatabaseName!]TableName
指定要给其中的记录加删除标记的表。
DatabaseName! 指定包含该表的非当前数据库名。如果数据库不是当前的数据库,必须加上包含有该表的数据库名。在数据库名的后面、表名的前面包含感叹号 (!) 分隔符。
WHERE FilterCondition1 [AND | OR FilterCondition2 ]
指定 Visual FoxPro 只给某些记录做删除标记。
说明
带有删除标记的记录在执行 PACK 前并不从表中做物理删除

编程
思路,生成一个新的数据库,从旧的数据库中提取数据,如果记录在新数据库中存在,就不复制,如果不存在,就将记录复制到新数据库中!这样的话就没重复的数据了
假定原数据是保存在sjdbf中,则程序如下:
use sj
copy to temp &&将原数据库内容复制到临时数据库中
zap &&清空原数据库
use temp
jlh=1
stro recc() to jls &&将原记录条数保存到变量中
do whil jlh<=jls &&依次判断在新表中是否存在重复记录
go jlh
stor code to lsbl &&将code字段的值保存在变量中
use sj
loca for code=lsbl
if found()
else
clos data
use temp
copy to lswj for recn()=jlh &&将没有找到的记录可在在临时文件中
use sj
appe from lswj &&从临时文件中追加记录
clos data
dele file lswjdbf &&删除产生的临时文件
endi
jlh=jlh+1
use tmep
endd
clos data
dele file tempdbf &&删除临时文件
再重新打开原数据库后,你会发现已经没重复的记录了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12995511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存