比如一个员工和部门表,要维护员工的部门信息,一般我的在用Interbase数据库时,
在TIBDATASET的Sql语句这样写:
select a.*,b.Name DName
from Emp a
left join Depart b on(a.DID = b.DID)在cxDBGird中维护DName的值,可以弹出一个窗口来选择部门并修改员工表达部门字段;而改用SqlServer的ADODATASET后,如果还是这样写,在更新员工部门的时候,部门也会
更新,当然原因我也知道,ADODataSet没有IBDATASET的InsertSql、UpdateSql、DeleteSql
的功能,但我想问的就是,在用ADODATASET修改其他连接表的字段的时候,有什么好方法
来完成和IBDATASET相同的功能,目前对于这种情况,我都采用计算字段来完成,Sql语句
为 : select * from emp ,然后加个DName的计算字段,来保证不会更新到Depart表。想问问做SqlServer开发的大虾们,你们的经验是什么,能参考下吗?

解决方案 »

  1.   

    樓主是不是直接使用記錄集UpdateBatch更新呀?
    以前遇到過這種情況。
    其實這種多表操作的,可以采用事務+循環處理方式更新。
    1、依據員工的DName取得對應DID編號,然後單獨更新emp表中此員式的DID值。
    2、循環更新完後記錄集,再事務提交就可以。
      

  2.   

    我的意思是,在员工表中的部门是保存的ID,所以才会引用部门表的Name;
    如果直接保存部门编码之类的,如果修改了,又要写同步的代码,麻烦;有更好的意见吗?你们现在的Code方法是什么?
      

  3.   

    在员工列表窗口修改员工的部门,此表中的部门为DepartID,各位没有遇到过?
      

  4.   

    还有人知道吗?你们在用SqlServer开发前台的时候没有遇到这种问题?