Functions.GetNextModified 方法 | |
-- todo --
返回缓冲表或游标中下一个已修改记录的记录号。
命名空间:
XSharp.VFP
程序集:
XSharp.VFP (在 XSharp.VFP.dll 中) 版本:2.22 GA
语法 FUNCTION GetNextModified(
nRecordNumber,
uArea,
lNoFire
) AS USUAL CLIPPER
[ClipperCallingConventionAttribute(new string[] { ... })]
public static __Usual GetNextModified(
__Usual nRecordNumber = default,
__Usual uArea = default,
__Usual lNoFire = default
)
查看代码参数
- 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防止将临时数据(如存储在控件中的数据或对当前记录所做的更新)刷新到底层游标。
示例 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.)
参见