以文本方式查看主题

-  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=104701)

--  作者:sgkyzfh
--  发布时间:2017/8/3 13:41:00
--  关于通过一个表向另外一个表有条件的赋值
在表A中有A、B、C、D四列,A、B、C三列不为空,当D列发生变化后,在表B中查找与之相同的数据行 ,找到后将表B的D列值付给表A的D列。两个D列为逻辑型数据。
我做了一个代码,但弄完后变成这个样子了,就是只有当表A的D列发生真假变化后,表B的D列才能变化,否则表B的D列不能变化。看看老师给指正一下吧!

Select Case e.DataCol.Name
    Case "D"
        Dim adr As DataRow = e.DataRow
        Dim pr As DataRow
                    Dim filter As String
            filter = "A = \'" & adr("A") & "\' And B = \'" & adr("点B") & "\' And C = \'" & adr("C") & "\'"
            pr = DataTables("表A").Find(filter)
            If pr IsNot Nothing Then
                adr("D") = pr("D")
End If
End Select

--  作者:sgkyzfh
--  发布时间:2017/8/3 13:41:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


--  作者:有点甜
--  发布时间:2017/8/3 14:43:00
--  

表ADataColChanged事件

 

Select Case e.DataCol.Name
    Case "车号","点位","描述"
        Dim adr As DataRow = e.DataRow
        Dim pr As DataRow
        Dim filter As String
        filter = "车号 = \'" & adr("车号") & "\' And 点位 = \'" & adr("点位") & "\' And 描述 = \'" & adr("描述") & "\'"
        pr = DataTables("表B").Find(filter)
        If pr IsNot Nothing Then
            adr("点检组归档") = pr("点检组归档")
        End If
End Select


--  作者:sgkyzfh
--  发布时间:2017/8/3 16:14:00
--  
老师,测试过了,但好像还有问题,也许我测试的方法不对,你再给看看
--  作者:有点甜
--  发布时间:2017/8/3 16:21:00
--  

你修改这三列 "车号","点位","描述",如果在表B找到相同的行,就把表B的值赋值过来。

 

你的逻辑是否有问题,请详细说明你要实现什么?


--  作者:sgkyzfh
--  发布时间:2017/8/3 21:33:00
--  
老师我的目的是这样的,我是搞设备管理的人员,例如车辆吧,有发动机、变速箱、差速器等大的总成件,也有小的件例如仪表、管路、刹车片、刹车分泵等,在企业管理中呢,主要对大总件进行生命周期管理,跟踪使用寿命和过程维修以及隐患的检查,当在使用发现了大总成件有问题时,就在表A中进行“车号、点位、隐患描述”等录入工作,如果认为需要检修呢,就在表A里的“生成隐患”列录入“生成隐患”字样,这样这些字段就在表B里自动添加一个一模一样的记录(我已经完成了)。表B呢是这样的作用,所有的检修工作单是从表B里形成的,如果检修完毕后,在表B的“点检组归档”里打钩,表示该隐患处理完毕。这时表A里的与之相对应的那条记录还没有结束的标示呢,如果再进去打钩,很不科学,我想如果B表的“点检组归档”打钩了,就让A表里的“点检组归档”也打钩,就方便多,也能够让这个问题在两个表中全部结案。
--  作者:sgkyzfh
--  发布时间:2017/8/3 21:39:00
--  
此外,老师你对我的问题原意有差异:
我是这样的意思,发生变化的列是表B里的“点检组归档”列,即:打钩。打钩后,使用这行的“车号、点位、描述”三列的值去A表找,找到相同的数据后,就让相同数据的“点检组归档”列为真。就算完成了。

--  作者:有点甜
--  发布时间:2017/8/3 21:43:00
--  

表B的DataColChanged事件

 

Select Case e.DataCol.Name
    Case "车号","点位","描述", "点检组归档"
        Dim adr As DataRow = e.DataRow
        Dim pr As DataRow
        Dim filter As String
        filter = "车号 = \'" & adr("车号") & "\' And 点位 = \'" & adr("点位") & "\' And 描述 = \'" & adr("描述") & "\'"
        pr = DataTables("表a").Find(filter)
        If pr IsNot Nothing Then
            pr("点检组归档") = adr("点检组归档")
        End If
End Select


--  作者:sgkyzfh
--  发布时间:2017/8/3 22:56:00
--  
好,老师你很棒。佩服,就是我长进的太慢了,描述的也不清楚。你多包涵。