首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

UniQuery控件SQL属性中采用多表查询,怎么更新表中数据

2012-06-10 
UniQuery控件SQL属性中采用多表查询,如何更新表中数据。使用了 UniConnection控件和UniQuery控件关联,其中U

UniQuery控件SQL属性中采用多表查询,如何更新表中数据。
使用了 UniConnection控件和UniQuery控件关联,其中UniQuery的SQL属性值设定如下:

Select a.EmplCode, a.EmplName, b.DeptName
from WSys_BD_Employee a left join WSys_BD_Department b on a.DeptID=b.ZBID

现在我要更新某个员工的部门信息,

用户通过部门参照界面,选定了一个新的部门信息。对应的程序代码进行如下编写:
fdataSource.DataSet.Edit;
fdataSource.DataSet['DeptID'] := ReferenceQuery.FieldByName('ZBID').AsString; //选定的部门信息写到UniQuery控件中。
fdataSource.DataSet['DeptName'] := ReferenceQuery.FieldByName('DeptName').AsString; <-数据更新报错

在更新的时候,报如下信息。
Field 'DeptName' cannot be modified

如果不向UniQuery控件中“DeptName”字段值写入值,用户无法看到选定的结果;同时要考虑到最后正式提交事务前,可能对同一条员工信息反复选择多次部门信息。

所以向大家请教一下,是哪个地方没处理好!! 或者有别的处理方式。

[解决办法]
可以在数据集BeforePost事件,用一个修改SQL语句去替代。
[解决办法]
有两种解决方法,第一种就是多表关联的话只能新增,修改 第一个表,但是不能删除,第二种方法:用批处理再根据ado的特性得到那些改变后的列值进行下sql修改相对应的表的字段值,一般都是用第二种方法来处理多表更新。

热点排行