如何更新视图中的数据?

大刘0417 2008-06-14 08:42:45
好几天没上来了,大家好!

问题是这样:
有两个表,表一字段为:部门编号(主索引),部门名称。表二字段为:部门编号(普通索引),人员编号(主索引),人员名称。
视图(VIEW1)字段为:表一的:部门编号,表二的:人员编号,人员名称。

当我改变或添加表二的数据时,浏览视图时,视图数据没有更新,但用USE命令关闭视图,再用USE打开视图数据更新了。
如何实现表中的数据与视图中的数据同步更新(即改了表中的数据(如表二的添加或修改),视图数据马上更新)。

说明:1、我的视图是通过视图设计器创建的。
2、我的应用是要在表单上添加表二的人员,想要视图中的数据立即更新,表二的数据环境设为三个表都随表单打开(表一,表二,VIEW1)

感谢。
...全文
941 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2008-06-16
  • 打赏
  • 举报
回复

用视图更新源表的示例


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”控件上的数据都正确提交!

大刘0417 2008-06-16
  • 打赏
  • 举报
回复
感谢老师,再学习!
yanyu1997 2008-06-15
  • 打赏
  • 举报
回复
我的理解是:视图是张虚拟的表,没一次运行时它会根据你的表重新生成
所以,你在表中添加了新的记录,没有重新打开,是不会更新的
大刘0417 2008-06-15
  • 打赏
  • 举报
回复
是俺这个问题问的太愚蠢了,还是有难度,怎么没有同志回贴呀?
大刘0417 2008-06-14
  • 打赏
  • 举报
回复
怎么没有人回呀?

着急呀!

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧