| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2081 人关注过本帖
标题:如何知道表格的数据是否被修改?
只看楼主 加入收藏
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
结帖率:99.55%
收藏
 问题点数:0 回复次数:6 
如何知道表格的数据是否被修改?
在表格的事件中,interactivechange是表格的值被修改时发生的,有什么办法能够在失去焦点时获得数据是否被修改,若已经修改则进行相应的处理,否则不处理。
先谢谢各位!
搜索更多相关主题的帖子: 表格 数据 
2008-10-02 10:40
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
收藏
得分:0 
GETFLDSTATE( ) 函数

认真看书学习,弄通Fox主义。
2008-10-02 12:00
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
首先,在表单的初始化事件中对表设置缓冲;其次,最好在表单中增加两个两个属性:nRecnum、nWhatrow以利于编程;最后,在表格的afterrowcolchange和beforerowcolchange事件中写入相关代码,以判断是否改变了数据。

VFP
2008-10-02 13:40
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
form初始化:

 PUBLIC   plRowMove   
  plRowMove=.T.   
 
IF NOT USED("表")
   USE 表 IN 0
ENDIF

SELECT 表

SET MULTILOCKS ON  
= CURSORSETPROP('Buffering', 5, '表' )


grid的afterrowcolchange:
LPARAMETERS nColIndex
lMov = .F.
IF ThisForm.nWhatRow # This.ActiveRow

ThisForm.nWhatRow = This.ActiveRow
nHold= RECNO()
GO ThisForm.nRecNum
cChange = GetFldState(-1,'表')
IF AT('2', cChange)>0
This.Refresh
lMov = .T.
IF MessageBox("确定要修改吗?",4)= 6
=TableUpdate(.T.)
ELSE
=TableRevert(.T.)
ENDIF
ENDIF
GO nHold
IF lMov
This.Refresh
lMov =.F.
ENDIF
ENDIF

grid的beforerowcolchange:
LPARAMETERS nColIndex
ThisForm.nRecNum = RECNO()

 IF   (THIS.RowColChange=1   OR   THIS.RowColChange=3)   AND   plRowMove=.F.   
  NODEFAULT   
  ENDIF

VFP
2008-10-02 13:51
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
谢谢两位的回复!
我仔细看了楼上的代码及帮助文件后,觉得这种方法对于整个表格数据是否改变、是否需要再作相应处理很有效。但对表中的某个单元的数据是否改变、是否需要作相应的处理则显示有点太麻烦了,还不如不管是否变动,都将相关的数据计算一遍更省事些。
我发帖时没有将目的说清楚:我是在表格中当数量和单价修改时,就需要将本行的金额及表单中的合计金额同时更新。若没有修改则不需要进行这些操作。上面的检测代码远比我更新处理的代码多,所以还不如不管是否修改,当这两列失去焦点时都进行更新更简单些。
再次感谢两位,让我又了解了这几个函数和命令的用法。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2008-10-02 16:14
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
上面程序是对记录有效的。如你改变了选中记录的字段值,在选中另一条记录时,会先提示你是否确认修改,在你作出选择后,焦点切换到另一条记录。

VFP
2008-10-02 16:46
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
是有效的。但在我这个应用当中,程序代码就显的太多,直接重复计算还更简单一些。

[[it] 本帖最后由 hu9jj 于 2008-10-2 19:11 编辑 [/it]]

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2008-10-02 19:10
快速回复:如何知道表格的数据是否被修改?
数据加载中...
 
   



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

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