Foxtable(狐表)用户栏目专家坐堂 → 将集合数据填充到姓名列,重复填充2000多行,什么原因?


  共有2197人关注过本帖树形打印复制链接

主题:将集合数据填充到姓名列,重复填充2000多行,什么原因?

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105932 积分:538729 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/7 9:04:00 [显示全部帖子]

请上传具体实例说明

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105932 积分:538729 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/7 9:51:00 [显示全部帖子]

Dim Vals As List(of String)
Vals = DataTables("值班排班表").GetValues("处级带班_姓名")
For Each name As String In DataTables("值班排班表").GetValues("科级带班_姓名")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
For Each name As String In DataTables("值班排班表").GetValues("值班人员_姓名")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
Dim dr As DataRow
For Each name As String In vals
    dr = DataTables("补助测试表").AddNew
    dr("姓名") = name
    dr("次数") = DataTables("值班排班表").GetValues("值班日期|处级带班_姓名","处级带班_姓名='" & name & "'").Count + DataTables("值班排班表").GetValues("值班日期|科级带班_姓名","科级带班_姓名='" & name & "'").Count + DataTables("值班排班表").GetValues("值班日期|值班人员_姓名","值班人员_姓名='" & name & "'").Count
Next

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105932 积分:538729 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/7 10:24:00 [显示全部帖子]

不可能,除非数据本身就有问题。上传有问题的实例说明

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105932 积分:538729 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/7 10:39:00 [显示全部帖子]

这种代码适合设计一个窗口,放到按钮中执行。

代码不是随便找个地方写入就可以使用的。每个事件都有自己的使用场景,不是随便乱用的

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105932 积分:538729 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/7 10:48:00 [显示全部帖子]

Dim Vals As List(of String)
Vals = DataTables("值班排班表").GetValues("处级带班_姓名")
For Each name As String In DataTables("值班排班表").GetValues("科级带班_姓名")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
For Each name As String In DataTables("值班排班表").GetValues("值班人员_姓名")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
Dim dr As DataRow
For Each name As String In vals
dr = DataTables("补助测试表").find("姓名='" & name & "'")
if dr is nothing then
    dr = DataTables("补助测试表").AddNew
    dr("姓名") = name
    dr("次数") = DataTables("值班排班表").GetValues("值班日期|处级带班_姓名","处级带班_姓名='" & name & "'").Count + DataTables("值班排班表").GetValues("值班日期|科级带班_姓名","科级带班_姓名='" & name & "'").Count + DataTables("值班排班表").GetValues("值班日期|值班人员_姓名","值班人员_姓名='" & name & "'").Count
end if
Next

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105932 积分:538729 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/7 11:04:00 [显示全部帖子]

使用find函数通过姓名查表然后取值:http://www.foxtable.com/webhelp/topics/0396.htm

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105932 积分:538729 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/7 11:39:00 [显示全部帖子]

看懂find是干嘛用的,学会怎么使用find,而不是抄代码,下面红色部分都是类似的用法

Dim Vals As List(of String)
Vals = DataTables("值班排班表").GetValues("处级带班_姓名")
For Each name As String In DataTables("值班排班表").GetValues("科级带班_姓名")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
For Each name As String In DataTables("值班排班表").GetValues("值班人员_姓名")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
Dim dr As DataRow
For Each name As String In vals
dr = DataTables("补助测试表").find("姓名='" & name & "'")
if dr is nothing then
    dr = DataTables("补助测试表").AddNew
    dr("姓名") = name
    dr("次数") = DataTables("值班排班表").GetValues("值班日期|处级带班_姓名","处级带班_姓名='" & name & "'").Count + DataTables("值班排班表").GetValues("值班日期|科级带班_姓名","科级带班_姓名='" & name & "'").Count + DataTables("值班排班表").GetValues("值班日期|值班人员_姓名","值班人员_姓名='" & name & "'").Count
    dim dr2 as datarow = DataTables("值班排班表").find("姓名='" & name & "'")
if dr2 isnot nothing then
    dr("年度") = dr2 ("年度")
end if
end if
Next

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105932 积分:538729 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/7 12:04:00 [显示全部帖子]

Dim Vals As List(of String)
Vals = DataTables("值班排班表").GetValues("处级带班_姓名")
For Each name As String In DataTables("值班排班表").GetValues("科级带班_姓名")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
For Each name As String In DataTables("值班排班表").GetValues("值班人员_姓名")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
Dim dr As DataRow
For Each name As String In vals
    dr = DataTables("补助测试表").find("姓名='" & name & "'")
    If dr Is Nothing Then
        dr = DataTables("补助测试表").AddNew
        dr("姓名") = name
    End If
    dr("次数") = DataTables("值班排班表").GetValues("值班日期|处级带班_姓名","处级带班_姓名='" & name & "'").Count + DataTables("值班排班表").GetValues("值班日期|科级带班_姓名","科级带班_姓名='" & name & "'").Count + DataTables("值班排班表").GetValues("值班日期|值班人员_姓名","值班人员_姓名='" & name & "'").Count
    Dim dr2 As DataRow = DataTables("值班排班表").find("处级带班_姓名='" & name & "' or 科级带班_姓名='" & name & "' or 值班人员_姓名='" & name & "'")
    If dr2 IsNot Nothing Then
        dr("年度") = dr2 ("年度")
    End If
    
Next

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105932 积分:538729 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/7 17:40:00 [显示全部帖子]

Dim Vals As List(of String)
Vals = DataTables("值班排班表").SQLGetValues("处级带班_姓名 + ',' + 节假日名称","处级带班_姓名 is not null")

For Each name As String In DataTables("值班排班表").SQLGetValues("科级带班_姓名 + ',' + 节假日名称","科级带班_姓名 is not null")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
For Each name As String In DataTables("值班排班表").SQLGetValues("值班人员_姓名 + ',' + 节假日名称","值班人员_姓名 is not null")
    If Vals.Contains(name) = False Then vals.Add(name)
Next
Dim dr As DataRow

For Each name As String In vals
    Dim arr() As String = name.Split(",")
    dr = DataTables("补助测试表").find("姓名='" & arr(0) & "' and 节假日名称='" & arr(1) & "'")
    If dr Is Nothing Then
        dr = DataTables("补助测试表").AddNew
        dr("姓名") = arr(0)
        dr("节假日名称") = arr(1)
    End If
    dr("次数") = DataTables("值班排班表").GetValues("值班日期|处级带班_姓名","处级带班_姓名='" & arr(0) & "' and 节假日名称='" & arr(1) & "'").Count + DataTables("值班排班表").GetValues("值班日期|科级带班_姓名","科级带班_姓名='" & arr(0) & "' and 节假日名称='" & arr(1) & "'").Count + DataTables("值班排班表").GetValues("值班日期|值班人员_姓名","值班人员_姓名='" & arr(0) & "' and 节假日名称='" & arr(1) & "'").Count
    Dim dr2 As DataRow = DataTables("值班排班表").find("(处级带班_姓名='" & arr(0) & "' or 科级带班_姓名='" & arr(0) & "' or 值班人员_姓名='" & arr(0) & "') and 节假日名称='" & arr(1) & "'")
    If dr2 IsNot Nothing Then
        dr("年度") = dr2 ("年度")
    End If
Next

 回到顶部