以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]修改数值后关联表数值不会更改  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=123366)

--  作者:紫色幽魂
--  发布时间:2018/8/13 11:18:00
--  [求助]修改数值后关联表数值不会更改
请问下下面标色的代码为什么不会把后台数据改为对应的新值,我希望原来单元格的值是空值,就自动改为新值,改完后同步表数据没有变,但是如果原来单元格不是空值,再次更改就会更改成功,我加了代码查看空值的时候是否允许,结果是了这段代码的
Dim Filter As String = "检验批编号 = \'" & e.DataRow("检验批编号") & "\'"
Dim Filter1 As String = "检验批编号 = \'" & e.DataRow("检验批编号") & "\'and 班组 <> \'"& "下料" &"\'"
Dim drs1 As List(Of DataRow) = DataTables("无损_构件清单").SQLSelect(Filter)
Dim drs2 As List(Of DataRow) = DataTables("无损_检测明细").SQLSelect(Filter)
Select Case e.DataCol.Name
    Case "班组"
        If e.OldValue = "" Then
                For Each dr1 As DataRow In drs1
                    dr1("班组") = e.DataRow("班组") \'修改构件清单表
                Next
        Else
            Dim Result As DialogResult = MessageBox.Show("是否将明细表数据全部更改(不包含下料组)","提示",MessageBoxButtons.YesNo)
            For Each dr1 As DataRow In drs1
                dr1("车间") = e.DataRow("车间")
            Next
            If Result = DialogResult.Yes Then
                For Each dr2 As DataRow In drs2
                    dr2("车间") = e.DataRow("车间")
                Next
            Else
                Return
            End If
        End If
End Select

--  作者:有点甜
--  发布时间:2018/8/13 12:09:00
--  

修改后要save,或者update的

 

http://www.foxtable.com/webhelp/scr/2901.htm

 


--  作者:紫色幽魂
--  发布时间:2018/8/13 13:31:00
--  回复:(有点甜)修改后要save,或者update的 ...
已经保存了的,还是不行,如果去掉这段就可以
--  作者:有点甜
--  发布时间:2018/8/13 15:27:00
--  
以下是引用紫色幽魂在2018/8/13 13:31:00的发言:
已经保存了的,还是不行,如果去掉这段就可以

 

做个可以测试的例子发上来。


--  作者:紫色幽魂
--  发布时间:2018/8/14 16:19:00
--  回复:(有点甜)以下是引用紫色幽魂在2018/8/13 13:3...
这个位置增加了一段测试,没有问题,每一步都执行了显示的也是正确的,但是结果不会改,是不是前面 Filter筛选条件错误呢
       For Each dr1 As DataRow In drs1
msgbox("准备将"& dr1("检验批") & "改为" & e.DataRow("检验批"))
            dr1("检验批") = e.DataRow("检验批")
        Next

--  作者:有点甜
--  发布时间:2018/8/14 16:42:00
--  

SystemReady = false

For Each dr1 As DataRow In drs1

    dr1("检验批") = e.DataRow("检验批")
    dr1.save
Next
SystemReady = True

--  作者:紫色幽魂
--  发布时间:2018/8/14 18:03:00
--  回复:(有点甜)SystemReady = falseFor Each dr1 ...
现在可以了,请问下这个是怎么回事,是别的代码干预了吗
--  作者:有点甜
--  发布时间:2018/8/14 18:28:00
--  
以下是引用紫色幽魂在2018/8/14 18:03:00的发言:
现在可以了,请问下这个是怎么回事,是别的代码干预了吗

 

改成这样试试

 

For Each dr1 As DataRow In drs1

    dr1("检验批") = e.DataRow("检验批")
    dr1.save
Next

--  作者:紫色幽魂
--  发布时间:2018/8/15 14:00:00
--  回复:(有点甜)以下是引用紫色幽魂在2018/8/14 18:0...
这样也可以,但是原来我在代码后面也进行 了保存的            DataTables("无损_检测明细").SQLUpdate(drs3),手动保存也保存过,刷新也是没有,但是你后面给我说的两个方法都可以,这有什么不同吗 
--  作者:有点甜
--  发布时间:2018/8/15 14:39:00
--  

那改成

 

DataTables("无损_构件清单").SQLUpdate(drs1)