以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  两列的值相互转换  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=41764)

--  作者:tj-pacer
--  发布时间:2013/10/26 21:36:00
--  两列的值相互转换

新项目在开发阶段BOM不确定,常发生设计变更,将新项目产品的BOM表设计成如下列

 

材料代码      材料名        是否用替代料      替代材料代码     替代材料名

233456      RP334        (逻辑列)         334556          ND7568

 

希望点击逻辑列后,逻辑列左右两列的值互换

 

材料代码      材料名        是否用替代料      替代材料代码     替代材料名

334556      ND7568                            233456          RP334        

 

求助代码如何写!


--  作者:有点甜
--  发布时间:2013/10/26 21:50:00
--  
 直接写就行了。

 dim temp = e.datarow("材料代码")
 e.datarow("材料代码") = e.datarow("替代材料代码")
 e.datarow("替代材料代码") = temp

--  作者:sloyy
--  发布时间:2013/10/26 22:03:00
--  

Dim A,B,C,D As String
表的DataColChanged 事件:

If e.DataCol.Name = "是否用替代料" Then \'如果用替代料列的内容变动
    If e.NewValue = True Then \'而且变动后的值是True(已勾选)
        A= e.DataRow("材料代码")
        B= e.DataRow("材料名")
        C= e.DataRow("替代材料代码")
        D= e.DataRow("替代材料名")
        e.DataRow("材料代码")=C
        e.DataRow("材料名")=D
        e.DataRow("替代材料代码")=A
        e.DataRow("替代材料名")=B
    End If
End If


--  作者:tj-pacer
--  发布时间:2013/10/26 22:30:00
--  
以下是引用sloyy在2013-10-26 22:03:00的发言:

Dim A,B,C,D As String
表的DataColChanged 事件:

If e.DataCol.Name = "是否用替代料" Then \'如果用替代料列的内容变动
    If e.NewValue = True Then \'而且变动后的值是True(已勾选)
        A= e.DataRow("材料代码")
        B= e.DataRow("材料名")
        C= e.DataRow("替代材料代码")
        D= e.DataRow("替代材料名")
        e.DataRow("材料代码")=C
        e.DataRow("材料名")=D
        e.DataRow("替代材料代码")=A
        e.DataRow("替代材料名")=B
    End If
End If

谢谢3楼,试了,报错。


--  作者:sloyy
--  发布时间:2013/10/27 9:46:00
--  
字段全部设为string 你可能设置为数字了吧
--  作者:lsy
--  发布时间:2013/10/27 11:13:00
--  
If e.DataCol.Name = "是否用替代材料" Then
    If e.DataRow(e.DataCol) = True Then
        e.DataRow("材料代码") = e.DataRow.OriginalValue("替代材料代码")
        e.DataRow("材料名") = e.DataRow.OriginalValue("替代材料名")
        e.DataRow("替代材料名") = e.DataRow.OriginalValue("材料名")
        e.DataRow("替代材料代码") = e.DataRow.OriginalValue("材料代码")
    End If
End If

--  作者:tj-pacer
--  发布时间:2013/10/27 12:18:00
--  
以下是引用lsy在2013-10-27 11:13:00的发言:
If e.DataCol.Name = "是否用替代材料" Then
    If e.DataRow(e.DataCol) = True Then
        e.DataRow("材料代码") = e.DataRow.OriginalValue("替代材料代码")
        e.DataRow("材料名") = e.DataRow.OriginalValue("替代材料名")
        e.DataRow("替代材料名") = e.DataRow.OriginalValue("材料名")
        e.DataRow("替代材料代码") = e.DataRow.OriginalValue("材料代码")
    End If
End If

Hi, 还是你的对。如果不用逻辑列判断,用双击"替代材料名",方法,将两列互换位置,并且点击可以往返,可以实行吗?


--  作者:lsy
--  发布时间:2013/10/27 14:23:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:列值互换.table


--  作者:tj-pacer
--  发布时间:2013/10/27 16:56:00
--  

太棒了,谢谢!