点击或拖拽改变大小

Functions.GetNextModified 方法

X#
-- todo --
返回缓冲表或游标中下一个已修改记录的记录号。

命名空间:  XSharp.VFP
程序集:  XSharp.VFP (在 XSharp.VFP.dll 中) 版本:2.22 GA
语法
 FUNCTION GetNextModified(
	nRecordNumber,
	uArea,
	lNoFire
) AS USUAL CLIPPER
查看代码

参数

nRecordNumber (Optional)
类型:__Usual
指定GetNextModified( )从哪个记录号之后开始搜索下一个已修改的记录。指定0作为nRecordNumber可以确定表或游标中第一个已修改的记录。
uArea (Optional)
类型:__Usual
指定GetNextModified( )返回下一个已修改记录号的表或游标的别名。
或者
指定GetNextModified( )返回下一个已修改记录号的表或游标的工作区。 如果不指定别名或工作区,GetNextModified( )返回当前选定表或游标中下一个已修改记录的记录号。
lNoFire (Optional)
类型:__Usual
指定抑制所有规则的触发。

返回值

类型:__Usual
数值型
备注
如果在指定记录之后没有已修改的记录,GetNextModified( )返回0。因此,如果只修改了一条记录, 要验证其修改,必须首先使用GO TOP命令将游标定位到更改记录之前。 如果记录的任何字段内容以任何方式更改(即使恢复了原始字段内容)或记录的删除状态发生变化,则认为该记录已被修改。
GetNextModified( )只能对启用了表缓冲的表和游标进行操作。 可以使用CursorSetProp( )启用表缓冲。
由于触发器不受GetNextModified( )影响,lNoFire只抑制字段和记录规则,以及"违反索引ID唯一性"错误。 lNoFire防止将临时数据(如存储在控件中的数据或对当前记录所做的更新)刷新到底层游标。
示例
X#
 1LOCAL lnCurRec
 2Clear
 3Close Databases
 4Open Database (HOME(2) + 'data\testdata')
 5Use Customer
 6* 启用表缓冲。
 7Set MultiLocks ON
 8=CursorSetProp("Buffering", 5, "customer")
 9* 将墨西哥客户的MAXORDAMT增加10%。
10Update Customer Set MaxOrdAmt=MaxOrdAmt * 1.1 Where Country = "Mexico"
11* 从第一个已修改的记录开始。
12lnCurRec = <b>GetNextModified</b>(0)
13
14* 循环直到处理完所有已修改的记录。
15DO WHILE .T.
16    * 移动到当前已修改的记录。
17    GOTO (m.lnCurRec)
18    * 在此处理已修改的行。
19    ? Customer.Company, Customer.MaxOrdAmt
20
21    IF Customer.MaxOrdAmt > 8500
22        =TableRevert(.F.)
23    ENDIF
24
25    ?? Customer.MaxOrdAmt
26
27    * 从这里获取下一个已修改的记录。
28    lnCurRec = <b>GetNextModified</b>(m.lnCurRec)
29
30    IF m.lnCurRec = 0 // 没有更多已修改的记录。
31EXIT
32    ENDIF
33ENDDO
34
35=TableRevert(.T.)  // 恢复示例数据并放弃所有更改。
参见