主题:关于VFP更新问题
我有一个VFP+MDB做的管理程序,采用远程视图方式管理,但由于多种原因想改动一下(不想每次添加数据都用REQUERY()去刷数据,也就是得到该记录保存在后台数据库中的RID关键字段值):
cDataAlais是一个“sql_表名”的远程视图,用CRAETE SQL VIEW创建的。
INSERT INTO (cDataAlais) (年度,件号,分类号,索引号,内容) VALUES (SAVE_DATA1,SAVE_DATA2,SAVE_DATA3,SAVE_DATA4,SAVE_DATA5)
IF !TABLEUPDATE(2,.t.,cDataAlais)&&保存
MESSAGEBOX("数据更新失败,系统将放弃当前修改的记录",16,"错误")
TABLEREVERT(.T.,cDataAlais)&&放弃对缓冲行、缓冲表或临时表的修改
ENDIF
INKEY(1)
SQLEXEC(nCon,"select rid form sql_表名 where 索引号=?SAVE_DATA4","time1")
nRID=time1.rid
问题是:如果不加中间的INKEY(1)语句,后面的一个SQLEXEC()运行的查询是查不到RID值的。
如果加一个延迟则就不会出现这种情况,如果这样,不是每次添加数据都要多用上一秒钟时间,太浪费时间了。我认为既然都TABLEUPDATE()成功了,为什么会得不到数据,非要加上一条拖延时间的语句才能达到目的,找不出原因,还望各位老师帮助指点一下。
cDataAlais是一个“sql_表名”的远程视图,用CRAETE SQL VIEW创建的。
INSERT INTO (cDataAlais) (年度,件号,分类号,索引号,内容) VALUES (SAVE_DATA1,SAVE_DATA2,SAVE_DATA3,SAVE_DATA4,SAVE_DATA5)
IF !TABLEUPDATE(2,.t.,cDataAlais)&&保存
MESSAGEBOX("数据更新失败,系统将放弃当前修改的记录",16,"错误")
TABLEREVERT(.T.,cDataAlais)&&放弃对缓冲行、缓冲表或临时表的修改
ENDIF
INKEY(1)
SQLEXEC(nCon,"select rid form sql_表名 where 索引号=?SAVE_DATA4","time1")
nRID=time1.rid
问题是:如果不加中间的INKEY(1)语句,后面的一个SQLEXEC()运行的查询是查不到RID值的。
如果加一个延迟则就不会出现这种情况,如果这样,不是每次添加数据都要多用上一秒钟时间,太浪费时间了。我认为既然都TABLEUPDATE()成功了,为什么会得不到数据,非要加上一条拖延时间的语句才能达到目的,找不出原因,还望各位老师帮助指点一下。