以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]数据更改后其他表单数据不会更改  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=122897)

--  作者:紫色幽魂
--  发布时间:2018/8/3 18:11:00
--  [求助]数据更改后其他表单数据不会更改
代码写在DataColChanged这里,数据更改后并没有执行,请问是为什么,哪儿错了
Dim Filter As String = "检验批编号 = \'" & e.DataRow("检验批编号") & "\'"
Dim Filter1 As String = "检验批编号 = \'" & e.DataRow("检验批编号") & "\'and 班组 <> \'"& "下料" &"\'"
Dim drs1 As List(Of DataRow) = DataTables("无损_构件清单").Select(Filter)
Dim drs2 As List(Of DataRow) = DataTables("无损_检测明细").Select(Filter)
Dim drs3 As List(Of DataRow) = DataTables("无损_检测明细").Select(Filter1)
Select Case e.DataCol.Name
    Case "检验批","报告编号_利光","报告编号_钢构"
        For Each dr1 As DataRow In drs1
            dr1("检验批") = e.DataRow("检验批")
            dr1("报告编号_利光") = e.DataRow("报告编号_利光")
            dr1("报告编号_钢构") = e.DataRow("报告编号_钢构")
        Next
        For Each dr2 As DataRow In drs2
            dr2("检验批") = e.DataRow("检验批")
            dr2("报告编号_利光") = e.DataRow("报告编号_利光")
            dr2("报告编号_钢构") = e.DataRow("报告编号_钢构")
        Next
    Case "车间"
        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
    Case "班组"
        If e.DataRow.OriginalValue("班组") Is Nothing Then
            Return
        Else
        Dim Result As DialogResult = MessageBox.Show("是否将明细表数据全部更改(不包含下料组)","提示",MessageBoxButtons.YesNo)
            If Result = DialogResult.Yes Then
                For Each dr3 As DataRow In drs3
                    For Each dr1 As DataRow In drs1
                        dr1("班组") = e.DataRow("班组") \'修改构件清单表
                    Next
                    dr3("班组") = e.DataRow("班组") \'修改检测明细表(不包含班组等于下料组的行)
                Next
            ElseIf Result = DialogResult.No Then
                For Each dr1 As DataRow In drs1
                    dr1("班组") = e.DataRow("班组")
                Next
            Else
                Return
            End If
        End If
End Select


--  作者:有点甜
--  发布时间:2018/8/3 18:20:00
--  
事件里面加入msgbox,看是否弹出
--  作者:紫色幽魂
--  发布时间:2018/8/5 16:31:00
--  回复:(有点甜)事件里面加入msgbox,看是否弹出
好像是行状态锁定了就不能更改,解锁后再试就可以了,有什么方法可以解决
--  作者:有点甜
--  发布时间:2018/8/5 20:46:00
--  
以下是引用紫色幽魂在2018/8/5 16:31:00的发言:
好像是行状态锁定了就不能更改,解锁后再试就可以了,有什么方法可以解决

 

没看懂你的问题。你如何加入msgbox的,msgbox弹出了什么?


--  作者:有点甜
--  发布时间:2018/8/5 20:47:00
--  
具体问题,做个例子发上来测试。
--  作者:紫色幽魂
--  发布时间:2018/8/6 0:20:00
--  回复:(有点甜)具体问题,做个例子发上来测试。
测试了多次,有的时候数据没有加载,加载了数据后可以修改,但是有的时候数据加载了也不能修改,代码都能够正常执行,但是执行后没有效果就像执行一样,数据没有改动,不知道是不是下面这段代码有问题呢
                    For Each dr1 As DataRow In drs1
                        dr1("班组") = e.DataRow("班组") 
                    Next

--  作者:有点甜
--  发布时间:2018/8/6 8:59:00
--  

1、加入msgbox了没有?msgbox(drs1.count)弹出什么?对于怀疑有问题的地方,都加上msgbox弹出看看。

 

2、做实例发上来测试。


--  作者:紫色幽魂
--  发布时间:2018/8/6 9:24:00
--  回复:(有点甜)1、加入msgbox了没有?msgbox(drs1.c...
加入了,但是不怎么会用,也就是看运行到哪一步了,这样加的:msgbox(1),msgbox(2)这样,在for each中间加入了一行行数显示代码,是正常的
                For Each dr1 As DataRow In drs1
                    dr1("班组") = e.DataRow("班组") 
                    msgbox(drs1.Count)
                Next
单独做个示例可能又可以没有问题

--  作者:有点甜
--  发布时间:2018/8/6 9:27:00
--  

1、试试加入systemready

 

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

 

2、贴出你加入的msgbox,以及弹出的信息分别是什么