以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  判断引用多行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=44127)

--  作者:yuyu060712
--  发布时间:2013/12/23 17:40:00
--  判断引用多行
老师,之前做过判断表达式,现在我想引用满足条件的多行?代码怎么写呢?
--  作者:Bin
--  发布时间:2013/12/23 17:43:00
--  
有具体的问题,才有具体的答复,泛泛而问很难帮上你.
--  作者:yuyu060712
--  发布时间:2013/12/23 17:45:00
--  

 If e.DataCol.Name = "产品编号" Then \'发生变化的是产品编号吗?
    \'在产品表找出该产品
   
Dim dr As DataRow
    dr =
DataTables("产品").Find("编号 = " & "\'" & e.DataRow("产品编号") & "\'" )
   
If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.
DataRow("品名")= dr("品名")
        e.
DataRow("型号")= dr("型号")
        e.
DataRow("规格")= dr("规格")
   
End If
End
If

这个是判断后引用一行,我想引用多行满足前面条件的的数据


--  作者:Bin
--  发布时间:2013/12/23 17:48:00
--  
把FInd 换成 select  http://www.foxtable.com/help/topics/0400.htm
--  作者:yuyu060712
--  发布时间:2013/12/23 17:57:00
--  
If e.DataCol.Name = "第一列" Then \'发生变化的是产品编号吗?
    \'在产品表找出该产品
    Dim dr As DataRow
    dr = DataTables("表A").Select("第一列 = " & "\'" & e.DataRow("第一列") & "\'" )
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("第二列")= dr("第二列")
        e.DataRow("第三列")= dr("第三列")
        e.DataRow("第四列")= dr("第四列")
    End If
End If

--  作者:yuyu060712
--  发布时间:2013/12/23 17:58:00
--  

不可以啊


--  作者:Bin
--  发布时间:2013/12/23 18:00:00
--  
请看清楚帮助例子,你选择出来的是行集合,多行. 并不是单一的行
--  作者:yuyu060712
--  发布时间:2013/12/24 10:13:00
--  

If e.DataCol.Name = "第一列" Then \'发生变化的是产品编号吗?
      Dim drs As List(Of DataRow)
    drs = DataTables("表A").Select("第一列 = " & "\'" & e.DataRow("第一列") & "\'" )
   For Each dr As DataRow In drs
        e.DataRow("第二列")= dr("第二列")
        e.DataRow("第三列")= dr("第三列")
        e.DataRow("第四列")= dr("第四列")
   Next
End If

老师,我修改了一下,可能哪里有点问题,只会借用最后一行


--  作者:Bin
--  发布时间:2013/12/24 10:17:00
--  
If e.DataCol.Name = "第一列" Then \'发生变化的是产品编号吗?
      Dim drs As List(Of DataRow) \'定义个行的集合
    drs = DataTables("表A").Select("第一列 = " & "\'" & e.DataRow("第一列") & "\'" )\'把查询到的行放到drs这个集合去,此时如果有查询到的行,都存在这个集合中了.
   For Each dr As DataRow In drs   \'循环遍历你查询引用到的所有行.
         \'此时每次执行的DR都是不一样的, 第一次执行是你查询到的行里面的第一行,第二次执行为你查询到的行第二行,以此类推.
        e.DataRow("第二列")= dr("第二列")  
        e.DataRow("第三列")= dr("第三列")
        e.DataRow("第四列")= dr("第四列")
        \'你每次都把查询到的行赋值给e.datarow  那后一次就把前一次给覆盖了,自然只有最后一次生效.
   Next
End If

--  作者:yuyu060712
--  发布时间:2013/12/24 10:23:00
--  
老师那后面的代码怎么写?集合我没懂。麻烦老师了