Visual FoxPro的游标有三种:只读游标、可读写游标、可更新游标。
1.只读游标是那种不能被修改的游标。
2.可读写游标是那种可以进行读写操作,但游标上的数据变更不被反映到数据源。
3.可更新游标是那种可以进行读写操作,并且任何数据变动都会反映到数据源。
也就是说,我们想要通过游标在VFP更新DM数据库中的表,需要的是一个可更新游标。
很遗憾,上述通过SQLEXEC()函数直接取得的游标,是一个可读写游标,也就是说如果我们修改mycursor中的值,VFP不会将修改同时更新到DM上。
这样可达不到我们使用DM的目的,所以在使用mycursor之前,我们还需要将游标mycursor设置为可更新游标。
VFP提供了设置游标属性的函数,使用方法如下:
设置可更新游标共有5步
A.CURSORSETPROP("TABLES",数据源表名,可更新光标名)
此步骤设定的是数据源里(SQL Server)待更新的表名,如果涉及多个表就这样写:CURSORSETPROP("TABLES","T1,T2","MyCursor")。
B.CURSORSETPROP("KEYFIELDLIST",关键字段,可更新光标名)
此步骤是设定关键字段的,这个关键字段是这可更新光标的字段,而不是数据源里字段。
C.CURSORSETPROP("UPDATABLEFIELDLIST",可更新字段列表,可更新光标名)
此步骤设定的是在可更新光标里哪些字段的变动要被反映到数据源,即哪些字段时可更新的。
D.CURSORSETPROP("UPDATENAMELIST",前后段字段对应关系列表,可更新光标名)
此步骤设定前后端字段的对应关系。
E.CURSORSETPROP("SENDUPDATES",.T.,可更新光标名)
按上述步骤,设置游标为可更新游标:
CURSORSETPROP("Tables","TBL_VFP_DM","mycursor")
CURSORSETPROP("KeyFieldList","ID,NAME,CONTENT","mycursor")
CURSORSETPROP("UpdatableFieldList","ID,NAME,CONTENT","mycursor")
CURSORSETPROP("UpdateNameList","ID TBL_VFP_DM.C1,NAME
TBL_VFP_DM.C2,CONTENT TBL_VFP_DM.C3","mycursor")
CURSORSETPROP("SendUpdates" ,.t.,"mycursor")