| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 578 人关注过本帖
标题:能不能用视图更新到原数据表
收藏  订阅  推荐  打印 
C_B_Lu
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:453
积分:4918
注册:2006-1-10
能不能用视图更新到原数据表

例如,我有一个视图如下:

CREATE VIEW dbo.ViewBom
AS
SELECT         dbo.Bom.SampleID, dbo.Bom.PartID, dbo.ViewPart.PartName,
                          dbo.ViewPart.PartSpec, dbo.ViewPart.ColorName, dbo.ViewPart.UnitName,
                          dbo.Bom.Dosage,dbo.Bom.Dosage
FROM             dbo.Bom LEFT OUTER JOIN
                          dbo.ViewPart ON
                          dbo.dbo.Bom.PartID = dbo.ViewPart.PartID

我现在将其数据绑定到DataGridView中,代码如下:
SqlConnection conn = new SqlConnection(strConnectionString);
string StrSql = "SELECT *  FROM  ViewBom ORDER BY PartID";
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);
sda.Fill(dataSet, "ViewBom");
BindingSource bs = new BindingSource();
bs.DataSource = dataSet.Table["ViewBom"];
dgv.DataSource = bs;


(注:Bom和ViewPart是两个SQL源表,而ViewBom则是由Bom和ViewPart得到的一个视图)
我现在的问题是:
有没有办法使其在对dgv进年编辑后,直接调用sda.Update()来更新Bom表中的数据?
搜索更多相关主题的帖子: dbo  视图  Bom  ViewPart  数据  
2007-12-8 16:16
guoxhvip
Rank: 12Rank: 12Rank: 12
来自:聖西羅南看臺
等级:版主
威望:40
帖子:3975
积分:39423
注册:2006-10-8

如果视图来源是一个表那就可以

愛生活 && 愛編程
2007-12-8 17:35
师妃暄
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:26
帖子:760
积分:8342
注册:2006-3-1

基本不可能~视图只供SELECT

有实力才会有魅力 实力来自坚持不懈的努力
2007-12-8 18:04
C_B_Lu
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:453
积分:4918
注册:2006-1-10

那么平时大家是怎么解决这个问题的,
如我上面的问题,是一个产品的料件清单,
如果是新增的话,会同时新增几十笔的记录.
如果是编辑,也会这一份BOM表中的几十笔数据分别执行插入,删除,修改等操作.
....

帮助那些真正需要帮助的人,是对帮助你的人最好的回报!
2007-12-8 22:29
guoxhvip
Rank: 12Rank: 12Rank: 12
来自:聖西羅南看臺
等级:版主
威望:40
帖子:3975
积分:39423
注册:2006-10-8

看你的样子好象这视图是分别从两张表填充的
在oracle中可以做一个INSTEAD OF触发器 就可以解决问题
但没在sql server中用过 楼主自己试试

愛生活 && 愛編程
2007-12-9 02:02
C_B_Lu
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:453
积分:4918
注册:2006-1-10

原帖由 [bold][underline]guoxhvip[/underline][/bold] 于 2007-12-9 02:02 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1138997&ptid=191182][/url]
看你的样子好象这视图是分别从两张表填充的
在oracle中可以做一个INSTEAD OF触发器 就可以解决问题
但没在sql server中用过 楼主自己试试
用触发器?? 很不错的想法,得试试看。。

帮助那些真正需要帮助的人,是对帮助你的人最好的回报!
2007-12-9 21:30
C_B_Lu
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:453
积分:4918
注册:2006-1-10

触发器应也不生吧, SqlDataAdapter好像也没法产生INSERT和UPDATE语句呀,没办法将数据更新到视图中.

我目前使有的方法是:先用DELETE 语句删除数据表中的所有相关数据,然后用foreach遍历DGV,重新生成INSERT语句将其添另到数据表中

帮助那些真正需要帮助的人,是对帮助你的人最好的回报!
2007-12-13 00:27
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.087190 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved