还是一个远程视图刷新问题

sdmfc 2004-11-06 09:52:51
我使用的是vfp8+ms sql server,我使用参数更新了sql server数据库中的一个记录,可我接着打开远程视图时(vfp8一直开着),发现远程视图并未随着sql server数据库的变化而变化。
请各位大侠指点,不胜感谢!
...全文
95 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sdmfc 2004-11-06
  • 打赏
  • 举报
回复
听说可以使用缓冲更新远程视图,请问如何更新?
十豆三 2004-11-06
  • 打赏
  • 举报
回复
那么我如何在更新完sql sql2000\database\stuzd后立即更新远程视图stuzd?

---------------------------------------------------------------------
有一个简单的办法:
就是
更新完sql sql2000\database\stuzd后
删除远程视图stuzd,然后重新建立远程视图stuzd。
sdmfc 2004-11-06
  • 打赏
  • 举报
回复
十豆三:代码不好贴吧,不过我可以说一下大体过程:
1、我在sql server 2000中建立了database数据库,其中有个表stuzd.
2、打开vfp8建立了一个项目stugl,在stugl中建立了一个sch数据库,在sch数据库中通过sql sql2000\database\stuzd建立了stuzd远程视图。
3、在stugl中新建了一个表单stuzdbrow.scx,其中有个表格数据源为远程视图stuzd。
4、浏览stuzdbrow,在其中一行双击,通过传递stubh,stuxm参数打开另一表单stuzdmxbrow.scx(已经建立好了)。
5、在表单stuzdmxbrow.scx中修改姓名(stuxm)(stubh不能修改),通过'sqlexec(nhandle,'exec stuzdedit ?stubh,?stuxm')'执行sql server2000\database的stuzdedit存储过程进行更新。
结果发现sql sql2000\database中stuzd是更新了,但在表单stuzdbrow.scx中再次双击打开表单stuzdmxbrow.scx,发现内容没变。原因肯定是远程视图stuzd没有从数据库更新,是吗?因为我关掉表单stuzdbrow.scx再次打开后发现行了,那么我如何在更新完sql sql2000\database\stuzd后立即更新远程视图stuzd?
请指教,谢谢!
不知说的明不明白?
十豆三 2004-11-06
  • 打赏
  • 举报
回复
请贴出你的代码!!!
sdmfc 2004-11-06
  • 打赏
  • 举报
回复
听说可以使用缓冲更新远程视图,请问如何更新,急!
cxmcxm 2004-11-06
  • 打赏
  • 举报
回复
远程视图创建中倒数第二个页面中primary key 字段与update 字段一定要设置,更新的复选框要选上,远程视图才能更新。
打开远程视图时,默认为行缓冲。
修改视图后,应用tableupdate函数更新视图,server端的表才会真正修改
LAIYANGPJ 2004-11-06
  • 打赏
  • 举报
回复
上面的就应该可以了.
sdmfc 2004-11-06
  • 打赏
  • 举报
回复
谢谢,可是如何接着更新视图呢?
LAIYANGPJ 2004-11-06
  • 打赏
  • 举报
回复
把这一句改一下:sqlexec(nhandle,'exec stuzdedit ?stubh,?stuxm')
=SQLEXEC(NHANDLE,"BEGIN TRANSACTION")
=sqlexec(nhandle,"exec stuzdedit ?stubh,?stuxm")
IF TABLEUPDATE(2,.F.,"STUZD")
=SQLEXEC(NHANDLE,"COMMIT TRANSACTION")
=MESSGAGEBOX('OK,提交成功!',64,MESSAGE())
ELSE
=SQLEXEC(NHANDLE,"ROLLBACK TRANSCTION")
=MESSGAGEBOX('OK,提交失败!',64,MESSAGE())
ENDIF
十豆三 2004-11-06
  • 打赏
  • 举报
回复
请参考:
----------转贴------------


用视图更新源表的示例


test 表是一个记录单位信息的,主关键字是dw_id(整型),有8个字段。

表单5上只有一个 “text” 控件、一个 “命令按钮” 控件:

一个“text”控件:用于输入条件值(整型),未设定任何属性(全缺省)。

以下是“命令按钮”click 中的代码:
*******************begin***********************
open database c:\qtgl\论坛\数据1
tt=thisform.text1.value
creat sql view cxb as select * from test where test.dw_id=?tt
select 0
use cxb
lSuccess=CURSORSETPROP("Tables", "test", "cxb")
lSuccess=CURSORSETPROP("KeyFieldList", "dw_id", "cxb")
lSuccess=CURSORSETPROP("UpdateType", 1, "cxb")
lSuccess=CURSORSETPROP("UpdatableFieldList", "dwmc,xm,dh,bz", "cxb")
lSuccess=CURSORSETPROP("WhereType", 1, "cxb")
lSuccess=CURSORSETPROP("Buffering", 5, "cxb")
do form c:\qtgl\论坛\表单6
********************* end *************************
表单6上只有4个“text”控件、一个“命令按钮”控件:
4个“text”控件分别绑定cxb.dwmc,cxb.xm,cxb.dh,cxb.bz;除此之外未设定任何属性(全缺省)
以下是“命令按钮”click 中的代码:
*******************begin************************
lSuccess=CURSORSETPROP("SendUpdates", .t., "cxb")
select cxb
BEGIN TRANSACTION

* Try to update all records in selected table
m.lSuccess = TableUpdate(.T.,.F.) &&successful update
IF m.lSuccess
= messagebox( "提交成功。" )
END TRANSACTION
else
= messagebox( "抱歉,未提交上。请重做一次。" )
ROLLBACK
ENDIF
release thisform
********************* end ********************************

在表单6的destory事件中的代码:
***********************begin***************
select cxb
use
delete view cxb
select test
use
**********************end ********************

测试结果
先运行“表单5”,输入1000后,点击“命令按钮”后出现“表单6”。
在“表单6”上任意一个“text”控件上输入数据(随便按)后,点击“命令按钮”后出现:提交成功。
按“确定”后回到“表单5”。
重复后,无论改哪个“text”控件上的数据都正确提交!
相关推荐
发帖
VFP

2573

社区成员

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
帖子事件
创建了帖子
2004-11-06 09:52
社区公告
暂无公告