以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于产品编号 更新的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=82674) |
|
-- 作者:yancheng -- 发布时间:2016/3/22 16:28:00 -- 关于产品编号 更新的问题 一个表是盘点库存表,一个材料表。 盘点库存表增加一个材料时,有一个:定额编码 。我增加一个订单时,订单表的DataColChanged事件写入了: If e.DataCol.Name = "定额编码" Then Dim cmd As New SQLCommand Dim dt As DataTable cmd.C Dim dr As DataRow = e.DataRow cmd.CommandText = "SEL ECT * Fr om {材料} Where [定额编码] = \'" & dr("定额编码") & "\'" dt = cmd.ExecuteReader If dt.DataRows.Count > 0 Then dr("账面库存") = dt.DataRows(0)("库存数量") dr("成本价") = dt.DataRows(0)("成本价") Else dr("账面库存") = Nothing dr("成本价") = Nothing End If End If 我在材料表中DataColChanged事件写入了: Select Case e.DataCol.Name Case "定额编码" Dim nm() As String = {“盘点明细”,"采购进货","入库明细","预算计划明细","需用计划明细","销售明细","直入直出明细"} For Each n As String In nm DataTables(n).ReplaceFor(e.DataCol.Name,e.NewValue,"定额编码 = \'" & e.OldValue & "\'") Next End Select 问题是:如果材料表的定额编码发生变,触发了:盘点明细,表的定额编码。 这样,盘点明细的代码执行,就把:账面库存和成本价,给改了。 请问,这个怎么解决好?
|
|
-- 作者:大红袍 -- 发布时间:2016/3/22 16:33:00 -- 你问题是什么?数据不正确,还是你不想触发datacolchanged事件?
systemReady=false DataTables(n).ReplaceFor(e.DataCol.Name,e.NewValue,"定额编码 = \'" & e.OldValue & "\'") systemReady=true
[此贴子已经被作者于2016/3/22 16:33:07编辑过]
|
|
-- 作者:yancheng -- 发布时间:2016/3/22 16:59:00 -- 我将材料表改成下面代码: Select Case e.DataCol.Name Case "定额编码" systemReady=False Dim nm() As String = {"采购进货","入库明细","预算计划明细","需用计划明细","销售明细","直入直出明细","盘点明细"} For Each n As String In nm DataTables(n).ReplaceFor(e.DataCol.Name,e.NewValue,"定额编码 = \'" & e.OldValue & "\'") Next systemReady=True End Select 问题:systemReady=False不起作用。 盘点明细:的代码还是执行,而且是未找到:材料表的:定额编码。把成本价和库存数量 改成了:nothing,空值 。
|
|
-- 作者:大红袍 -- 发布时间:2016/3/22 17:10:00 -- 不可能触发代码,请上传实例说明情况。 |
|
-- 作者:yancheng -- 发布时间:2016/3/22 17:17:00 -- 老师,你看一下是不是关联表的原因? |
|
-- 作者:大红袍 -- 发布时间:2016/3/22 17:25:00 -- 把那个【同步更新关联列内容】的勾选去掉。 |
|
-- 作者:大红袍 -- 发布时间:2016/3/22 17:26:00 -- 做实例的方法:导出表成excel;新建一个项目;导入表,拷贝代码过去。 |
|
-- 作者:yancheng -- 发布时间:2016/3/22 17:33:00 -- 同步更新,删除后: 打不开系统 或打开出现:索引超出了数组界限。错误。 ctrl 按住不执行代码的方式,也打不开系统 .NET Framework 版本:2.0.50727.5483 Foxtable 版本:2016.3.9.1 错误所在事件: 详细错误信息: 索引超出了数组界限。 一点,确定,就关闭。
[此贴子已经被作者于2016/3/22 17:37:02编辑过]
|
|
-- 作者:大红袍 -- 发布时间:2016/3/22 17:39:00 -- 提示这个错误的话,你升级到最新版2016.3.19版应该能打开。 |
|
-- 作者:yancheng -- 发布时间:2016/3/22 18:18:00 -- 完美解决。谢谢。systemReady=False也自动起作用了。 好像跟:
[此贴子已经被作者于2016/3/22 18:18:52编辑过]
|