以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于插入一行导致数据覆盖改变的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148724)

--  作者:syst
--  发布时间:2020/4/14 11:25:00
--  [求助]关于插入一行导致数据覆盖改变的问题
老师您好,遇到一个问题。帮忙分析一下噢,外部数据源(SQL数据库,阿里云)。
有一个“产品表”,当这个产品表插入一行的时候,新插入的新的产品编号会在“销售明细”表上覆盖掉另外一种产品的产品编号(仅仅是编号,名称和规格没有覆盖)。但是”产品表”里面显示各个产品都是正确的,正确的编号,正确的名称,正确的规格。
这种情况是怎么引起的呢?

注:销售明细里面的产品编号是通过一个目录树选择的。然后通过一段代码从“产品表”里筛选出对应的名称和规格自动填入。

会不会是因为外部数据表“插入”的问题,帮助里面说外部数据表是不能用插入的?
[此贴子已经被作者于2020/4/14 11:28:27编辑过]

--  作者:有点蓝
--  发布时间:2020/4/14 11:50:00
--  
应该是什么地方代码有冲突了。检查表事件
--  作者:syst
--  发布时间:2020/4/14 12:14:00
--  
奇怪的是明细表里面的产品编号改掉以后,居然没有触发表事件datacolchanged,这个事件里面有代码自动查询产品表的对应的名称和规格填入的。
其他事件看不出什么冲突噢

有没有遇到过这种情况呢?改动了,但是没有触发对应的事件。那么他是怎么改动的呢?
[此贴子已经被作者于2020/4/14 12:30:57编辑过]

--  作者:有点蓝
--  发布时间:2020/4/14 13:37:00
--  
事件datacolchanged写了什么代码?除非是表达式列,否则肯定会触发
--  作者:syst
--  发布时间:2020/4/14 16:06:00
--  
写的就是这个:所以奇怪的是为什么产品编号自动改动了,但是名称和规格还是之前的。

If e.DataCol.Name = "产品编号" Then 
    Dim dr As DataRow
    dr = DataTables("产品架构").Find("商品编号=\'" & e.DataRow("产品编号") & "\'" )
    If dr IsNot Nothing 
        e.DataRow("产品名称")= dr("商品名称")
        e.DataRow("规格型号")= dr("规格型号")
        
        e.DataRow("单位")= dr("单位")
        e.DataRow("销售单价")= dr("公开售价")
        
        e.DataRow("日期")= Date.today()
    End If
End If

找不出原因噢。会不是是插入某一行的时候有影响呢?因为发现问题的都是在产品表里插入一行以后,在销售明细里面就会有一些其他编号莫名其妙的变为新插入行输入的编号。更加奇怪的是,编号变了,其他都没变

--  作者:有点蓝
--  发布时间:2020/4/14 17:10:00
--  
看不出什么问题。上传实例测试看看