SPT下,删除远程表后刷新问题
表单的INT事件中:
**———— 1.设置远程视图需要的变量
Table0="khgli" &&源表
Table1="khgli1" &&临时表
KeyFieldo="bhao" &&临时表的关键字
FieldList="" &&需要更新的字段
NameList="" &&临时表字段与源表字段的对应关系
**———— 2.建立远程视图
my_select="Select * From &Table0"
SQLExec(Pub_ConnHandle,my_select,Table1)
**———— 3.获取临时表所有字段名
SELECT &Table1
FOR i = 1 TO FCOUNT()
i2 = LOWER(ALLTRIM(FIELD(i)))
FieldList = FieldList + IIF(EMPTY(FieldList),"",",") + i2
NameList = NameList + IIF(EMPTY(NameList),"",",") + i2 + " " + Table0 + "." + i2
NEXT
**———— 4.设置临时表属性,使其能更新服务器远程表
CursorSetProp("Tables",Table0,Table1) && 1.设置临时表与远程表的表名,如果涉及多个表就这样写: CursorSetProp("Tables","源表1,源表2","临时表")
CursorSetProp("KeyFieldList",KeyFieldo,Table1) && 2.设置临时表的关键字(注意不是源表的字段)
CursorSetProp("UpdatableFieldList",FieldList,Table1) && 3.设置临时表的哪些字段需要更新到源表
CursorSetProp("UpdateNameList",NameList,Table1) &&& 4.设置临时表字段与源表字段的对应关系
CursorSetProp("SendUpdates",.T.,Table1) && 5.打开 SQL 发送开关,最关键的一步
CursorSetProp("WhereType",2,Table1) &&更新源表的 WHERE 子句:1.根据关键字;2.根据关键字+可更新字段;3.根据关键字+已更新字段;4.根据关键字+时间戳
CursorSetProp("Buffering",3,Table1) &&设置缓冲:1.无缓冲;2.保守式记录锁定;3.开放式记录锁定;4.保守式表锁定;5.开放式表锁定
Thisform.mygrid()
删除按纽的Click事件中:
**——开始 VFP 事务处理.
Begin Transaction
lEverythingOK=Tableupdate(0,.F.,Table1) &&开始更新远程表
If lEverythingOK
=REQUERY("&Table1")
End Transaction &&结束 VFP 事务处理.
Thisform.grid1.Refresh
Messagebox("更新成功!",64,"提示")
Else
ROLLBACK
=TABLEREVERT(.T.) &&取消对临时表的修改,使其与远程表相同
Messagebox("更新失败!",16,"警告")
Return
ENDIF
程序运行后,源表的数据能删除,但会出错,提示“在事务处理期间不能发布此命令”。错误指向:=REQUERY("&Table1"),尝试把=REQUERY("&Table1")写在其它地方也没有用。
我的目的是删除远程表后立即刷新,使远程表(绑定了Grid)与源表相同,而不单单是加了一个删除标记,搞了几天了都没有搞定,请教各位老师帮个忙,先谢谢了!