| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3941 人关注过本帖
标题:关于使用视图删除源表数据的问题,求高手指点。
只看楼主 加入收藏
lqqa30256
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-4-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
关于使用视图删除源表数据的问题,求高手指点。
在模仿一个项目文件时,改了一些东西。对表的操作改成了对视图的操作,添加记录已经解决了,但是删除记录怎么都改不了,不知道思路上有没有错误,求高手指点。

我把删除按钮的代码发上来,如下

numvar=thisform.pageframe1.ActivePage       &&用来判断当前活动的页框
DO CASE                                     &&判断当前活动页框,其中3、4是视图,错误也是在这两个页框中的表中出现的
    CASE numvar=1
        tablevar="bmb"
    CASE numvar=2
        tablevar="zwb"
    CASE numvar=3
        tablevar="ygxxst"            &&ygxxst(员工信息视图)是基于ygxxb(员工信息表)和部门、职务表共同建立的视图
        viewvar="ygxxb"
    CASE numvar=4
        tablevar="jbgzst"
        viewvar="jbgzb"
ENDCASE
SELECT &tablevar
x=MESSAGEBOX("真的要删除当前记录吗?",1+32+0,"确认删除")
IF x=1                                                    &&我是想先使用视图,选择记录并做删除标记,然后选择表执行pack语句,
    DELETE                                            &&然后刷新视图,重新绑定数据源,刷新表单
    IF numvar>2
        SELECT &viewvar
        PACK
        REQUERY("&tablevar")
    ENDIF
    thisform.pageframe1.Pages(thisform.pageframe1.ActivePage).grid1.recordsourcetype=1
    thisform.pageframe1 .pages(thisform.pageframe1.ActivePage).grid1.recordsource=tablevar
    thisform.Refresh
ENDIF
高手给看下是思路的问题,还是什么,该怎么解决?
搜索更多相关主题的帖子: 记录 项目 
2013-07-18 21:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
知道“视图”是什么吗?

授人以渔,不授人以鱼。
2013-07-18 21:41
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
x=1 改为 x=6
2013-07-18 21:42
lqqa30256
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-4-5
收藏
得分:0 
以下是引用TonyDeng在2013-7-18 21:41:07的发言:

知道“视图”是什么吗?

对视图不是很清楚,只能理解到是一个临时表,类似查询,可以更新源表的一些信息,不能进行添加和删除记录的操作,请指点。
2013-07-18 21:48
lqqa30256
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-4-5
收藏
得分:0 
以下是引用tlliqi在2013-7-18 21:42:31的发言:

x=1 改为 x=6

1和6有什么区别吗?
2013-07-18 21:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
视图是从表中复制出来的一份“复印版”,有数据重组和筛选的等于是抄一份新版文档,增删改视图在原理上说是不能影响到数据原件的。明白这个道理,就知道应该不去删视图上的数据,而是从视图上获得记录的关键字到原来的表上找到真身去做删除动作,然后再重新抄出一份视图。VFP9对之前版本的作了一点修改,可以从视图中删除数据,并影响到原表,标准的SQL是没有的,这是VFP自己的扩展功能,如果你考虑到版本差异,用或不用要衡量过,如果版本是低的,就用上面我说的办法。但实际上,这种删除的动作最好是直接对原表,改用视图只能把事情搞复杂,让自己做更多的事。

[ 本帖最后由 TonyDeng 于 2013-7-18 22:01 编辑 ]

授人以渔,不授人以鱼。
2013-07-18 21:59
lqqa30256
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-4-5
收藏
得分:0 
以下是引用TonyDeng在2013-7-18 21:59:45的发言:

视图是从表中复制出来的一份“复印版”,有数据重组和筛选的等于是抄一份新版文档,增删改视图在原理上说是不能影响到数据原件的。明白这个道理,就知道应该不去删视图上的数据,而是从视图上获得记录的关键字到原来的表上找到真身去做删除动作,然后再重新抄出一份视图。VFP9对之前版本的作了一点修改,可以从视图中删除数据,并影响到原表,标准的SQL是没有的,这是VFP自己的扩展功能,如果你考虑到版本差异,用或不用要衡量过,如果版本是低的,就用上面我说的办法。但实际上,这种删除的动作最好是直接对原表,改用视图只能把事情搞复杂,让自己做更多的事。

明白了。那vfp9中如何从视图删除数据呢,该怎么操作?
2013-07-18 22:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
在DELETE-SQL命令中增加alias别名,指令删除指定别名上的数据,这个别名可以是表名、工作区别名或文件名。

图片附件: 游客没有浏览图片的权限,请 登录注册

授人以渔,不授人以鱼。
2013-07-18 22:11
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:7 
恕我直言,如果说错了,我向大家学习!
从vfp 6.0 开始,视图的作用,已经起到和操作原表时,几乎同等功能的作用。可以对原表进行各种常规的操作。比如:)查询、替换、插入、删除等功能。注意的是:视图删除记录时,需要用到:set delete on ,并且要求有唯一的字段索引。(物理删除,需对'原表'再  pack)。其他操作,与操作原表无什么区别。除此之外,视图的作用远不止这些,特别是远程视图,提供了对其他数据库进行操作的功能。以及同时对多表操作的功能。视图还有其他功能,对原表有一定的保护性,如果直接操作原表期间,意外原因有可能导致原表的损坏,但视图不会,因为可以临时创建他。有关视图的进一步叙述,可查看有关帮助文件 ...



[ 本帖最后由 qingfameng 于 2013-7-19 10:30 编辑 ]
2013-07-18 23:48
lqqa30256
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-4-5
收藏
得分:0 
虽然理解了,但是在用视图删除原表数据写代码上还是不会。我发个源文件,帮我看看该怎么写。
hxyy.rar (20.92 KB)
是csh表单中的删除按钮的代码。
2013-07-20 17:37
快速回复:关于使用视图删除源表数据的问题,求高手指点。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019192 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved