以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于DataColChange事件引发的一点疑问 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94005) |
-- 作者:zhy400137 -- 发布时间:2016/12/13 9:56:00 -- 关于DataColChange事件引发的一点疑问 Select Case e.DataCol.name Case "产品编号" Dim dr As DataRow = DataTables("库存").Find("产品编号 = \'" & e.OldValue & "\'") If dr Is Nothing Then dr = DataTables("库存").AddNew() dr("产品编号") = e.DataRow("产品编号") dr("产品名称") = e.DataRow("产品名称") dr("产品规格") = e.DataRow("产品规格") Else dr("产品编号") = e.DataRow("产品编号") End If Case "产品名称","产品规格" Dim dr As DataRow = DataTables("库存").Find("产品编号 = \'" & e.DataRow("产品编号") & "\'") If dr IsNot Nothing Then dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name) End If End Select 以上是帮助中关于非关联表联动的一段内容,但是否少写了主表行和子表行要SAVE的代码,不然是否会存在 主表改后,没保存但库存表的内容已变化,导致的数据不一致,此时是否要 dr.save e.datarow.save
|
-- 作者:zhy400137 -- 发布时间:2016/12/13 10:08:00 -- 由此我还有一个困扰很久的疑问,窗口表中加载数据 代码Datatables("表").load()中的False参数是要好还是不要好, 1、不要的情况:Load() 表中输入的数据,我没有点保存按钮,但重新打开窗口,没有保存的数据仍然存在,这样如果此行的要验证非空的数据, 即有些数据不输入不允许保存的时候,就有点矛盾。 2、要的情况:Load(False) 如果存在 在DataColChanged事件中进行两表联动,主表更改数据,子表也同时更改,但主表因某种原因没保存,子表在DataColChanged 中做了SAVE,那两表会出现不一致的情况。
|
-- 作者:有点蓝 -- 发布时间:2016/12/13 10:11:00 -- 这个是操作逻辑的问题了,理论上当然都要保存数据的。 至于是不是要自动保存根据自己的需要了,加上这2句代码就变成了自动保存,有些人可能不喜欢这样。
|
-- 作者:zhy400137 -- 发布时间:2016/12/13 10:34:00 -- 那如果不自动保存的话,是否要在主表的保存按钮中,写入主子表同时保存的代码?就是要 Datatables("主表").save Datatables("子表").save ?
|
-- 作者:有点蓝 -- 发布时间:2016/12/13 10:55:00 -- 既然要父子表进行同步,当然要同时保存。 逻辑都是自己控制的,既然之前的逻辑不符合要求,那就改为符合自己要求的用法。 既然要加载,当然要考虑修改的数据应该什么处理,做了一半,不想丢掉,那就只能暂停加载,等编辑完毕保存了再说。不然就全部回滚之前的更改。都是要靠自己的代码来控制的
|
-- 作者:zhy400137 -- 发布时间:2016/12/13 13:22:00 -- 我自己再体会下,谢谢! |