以文本方式查看主题

-  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
--  
老师,你看一下是不是关联表的原因?
我做实例太慢了。是的外部源:ASSEC,且数据多。能不好公开的,。还得删,你教我一个快的做实例的方法好吗?
图片点击可在新窗口打开查看此主题相关图片如下:222.jpg
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间: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编辑过]