以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73845)

--  作者:wumingrong1
--  发布时间:2015/8/27 17:08:00
--  [求助]
有表间条件填充公式如下:将【GPON口与分纤盒对应关系表】中符合条件的【分纤盒编号】内容填写到【 OLT设备端口密码表】相对应的【分纤盒编号】中去;但是以下命令只能填充一个内容;如果GPON口与分纤盒对应关系表】中存在多条符合条件的内容,我该怎么实现通过“,”进行分隔填入到分纤盒编号】中去?

For Each r As Row In Tables("OLT设备端口密码表").Rows
Dim dr As DataRow = DataTables("GPON口与分纤盒对应关系表").Find("机房名称 = \'" & r("机房名称") & "\' and 设备名称 = \'" & r("设备名称") & "\' and 设备端口 = \'" & r("设备端口") & "\'")
If dr IsNot Nothing Then
For Each s As String In "分纤盒编号".Split("|")
r(s) = dr(s)
Next
End If

如果我想实现以下效果,命令该怎么修改?

 GPON口与分纤盒对应关系表                                            OLT设备端口密码表                                                      

机房名称    设备名称     设备端口      分纤盒编号                 机房名称    设备名称     设备端口      分纤盒编号

A              B              C               1                             A             B               C              1,2,3
A              B              C               2
A              B              C               3             

--  作者:blsu33
--  发布时间:2015/8/27 17:21:00
--  
是不是这么写呢
Dim drs As List (of DataRow)
For Each r As Row In Tables("OLT设备端口密码表").Rows
    drs=DataTables("OLT设备端口密码表").Select("机房名称 = \'" & r("机房名称") & "\' and 设备名称 = \'" & r("设备名称") & "\' and 设备端口 = \'" & r("设备端口") & "\'")
    If drs IsNot Nothing Then
        For Each dr As DataRow In drs
            Dim Names As New List(Of String)
            If Names.Contains(dr("分纤盒编号"))=false then
                Names.Add("分纤盒编号")
            End If
        Next
        r("分纤盒编号")=""
        r("分纤盒编号")=Names
    End If
Next


--  作者:wumingrong1
--  发布时间:2015/8/27 17:39:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:360截图20150827173929517.jpg
图片点击可在新窗口打开查看

--  作者:blsu33
--  发布时间:2015/8/27 17:56:00
--  
Dim drs As List (of DataRow)
For Each r As Row In Tables("OLT设备端口密码表").Rows
    drs=DataTables("OLT设备端口密码表").Select("机房名称 = \'" & r("机房名称") & "\' and 设备名称 = \'" & r("设备名称") & "\' and 设备端口 = \'" & r("设备端口") & "\'")
    If drs IsNot Nothing Then
Dim Names As New List(Of String)
Names=""
        For Each dr As DataRow In drs
            \'Dim Names As New List(Of String)
            If Names.Contains(dr("分纤盒编号"))=false then
                Names.Add("分纤盒编号")
            End If
        Next
        r("分纤盒编号")=""
        r("分纤盒编号")=Names
    End If
Next
[此贴子已经被作者于2015/8/27 17:56:25编辑过]

--  作者:大红袍
--  发布时间:2015/8/27 18:18:00
--  
Dim drs As List (of DataRow)
For Each r As Row In Tables("OLT设备端口密码表").Rows
    drs=DataTables("OLT设备端口密码表").Select("机房名称 = \'" & r("机房名称") & "\' and 设备名称 = \'" & r("设备名称") & "\' and 设备端口 = \'" & r("设备端口") & "\'")
    Dim bhs As String() = r("分纤盒编号").split(",")
    If drs.count > 0 Then
        For i As Integer = 0 To bhs.length - 1
            drs(i)("分纤盒编号") = bhs(i)
        Next
    End If
   
Next

--  作者:wumingrong1
--  发布时间:2015/8/28 9:40:00
--  
5楼的命令没有任何效果。是不是没写对哦?
--  作者:大红袍
--  发布时间:2015/8/28 9:42:00
--  

 

[此贴子已经被作者于2015/8/28 9:42:44编辑过]

--  作者:大红袍
--  发布时间:2015/8/28 9:43:00
--  
Dim drs As List (of DataRow)
For Each r As Row In Tables("OLT设备端口密码表").Rows
    drs=DataTables("GPON口与分纤盒对应关系表").Select("机房名称 = \'" & r("机房名称") & "\' and 设备名称 = \'" & r("设备名称") & "\' and 设备端口 = \'" & r("设备端口") & "\'")
    Dim bhs As String() = r("分纤盒编号").split(",")
    If drs.count > 0 Then
        For i As Integer = 0 To bhs.length - 1
            drs(i)("分纤盒编号") = bhs(i)
        Next
    End If
   
Next

--  作者:wumingrong1
--  发布时间:2015/8/28 11:27:00
--  
还是不行哦,帮忙看一下附件;相实现点击某一按钮后,在【B表】的【分纤盒编号】中能够自动填入【A表】中符合【机房名称】【设备名称】【设备端口】都相同的所有【分纤盒编号】、并以","分隔开来。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目20.foxdb


--  作者:大红袍
--  发布时间:2015/8/28 11:31:00
--  
\'\'\'...
Dim drs As List (of DataRow)
For Each r As Row In Tables("表B").Rows
    drs=DataTables("表A").Select("机房名称 = \'" & r("机房名称") & "\' and 设备名称 = \'" & r("设备名称") & "\' and 设备端口 = \'" & r("设备端口") & "\'")
    Dim bhs As String() = r("分纤盒编号").split(new char() {",", ","})
    If drs.count > 0 Then
        For i As Integer = 0 To bhs.length - 1
            drs(i)("分纤盒编号") = bhs(i)
        Next
    End If
   
Next