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修改相对应的表的字段值,一般都是用第二种方法来处理多表更新。