Foxtable(狐表)用户栏目专家坐堂 → 计算同一数据列有多少个相同的数据


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

主题:计算同一数据列有多少个相同的数据

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


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
计算同一数据列有多少个相同的数据  发帖心情 Post By:2021/1/13 8:13:00 [只看该作者]

If CurrentTable.name = "接头BOM"
    dim cnt as integer = 0
    Dim dr As DataRow
    Dim mr As DataRow = e.DataRow
    Dim drs As List(of DataRow)
    dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & ")
    drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & ")
    For i As Integer = 1 To drs.Count - 1
        If drs(i)("物料号") <> drs(i-1)("物料号")    
            cnt = cnt + 1
        End If
    Next
    if cnt >= 1
        messagebox.show("本页面存在两个以上不同的物料号!")
    end if
end if 

上述代码是放在菜单上一个按钮里面的,用于统计某个数据列“物料号”里面有多少个不同的物料号。但是无法保存此代码,说“错误代码:Dim mr As DataRow = e.DataRow”。请你帮我修改一下。谢谢。

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


加好友 发短信
等级:狐神 帖子:4773 积分:34673 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2021/1/13 8:27:00 [只看该作者]

为何不用GetValues

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


加好友 发短信
等级:超级版主 帖子:111406 积分:567100 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/13 8:45:00 [只看该作者]

先看看:http://www.foxtable.com/webhelp/topics/0604.htm,不同事件有不同的e参数,菜单按钮不存在e.DataTable、e.DataRow这种东西,使用GetValues一句代码就可以了

dim cnt as integer = DataTables("接头BOM").GetValues("物料号").count
    if cnt > 1
        messagebox.show("本页面存在" & cnt & "个以上不同的物料号!")
    end i

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


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/1/14 7:55:00 [只看该作者]

如果只要统计筛选后能看到的数据(而不是加载的全部数据),如何改写代码?

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


加好友 发短信
等级:狐神 帖子:4773 积分:34673 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2021/1/14 8:09:00 [只看该作者]

加个条件,例如tables("表").filter

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


加好友 发短信
等级:超级版主 帖子:111406 积分:567100 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/14 9:04:00 [只看该作者]

.GetValues("物料号",tables("接头BOM").filter)

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


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/1/14 15:33:00 [只看该作者]

        For Each r1 As Row In Tables("接头BOM").Rows
            Dim st1 As String = "45107-800-01"
            Dim dr1 As DataRow = DataTables("接头BOM").Find("原材料 = '" & st1 & "'")
            If dr1 IsNot Nothing AndAlso dr1.IsNull("杆数") = False
                dr1("数量") = dr1("杆数") * 2
                dr1("生产核对记录") = "已核对 " & User.Name & " " & Date.Now
            End If
        Next

上述代码我是希望在筛选后的数据行里面查找,但是红色那行代码要怎样修改才行呢?

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


加好友 发短信
等级:超级版主 帖子:111406 积分:567100 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/14 15:38:00 [只看该作者]

Dim st1 As String = "45107-800-01"
Dim filter As String = Tables("接头BOM").filter
If filter > "" Then
    filter = filter & " and "
End If
filter = filter & " 原材料 = '" & st1 & "'"
Dim dr1 As DataRow = DataTables("接头BOM").Find(filter )
If dr1 IsNot Nothing AndAlso dr1.IsNull("杆数") = False
    dr1("数量") = dr1("杆数") * 2
    dr1("生产核对记录") = "已核对 " & User.Name & " " & Date.Now
End If

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


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/1/15 19:44:00 [只看该作者]

        Dim st3 As String = "45216-104"
        Dim filter3 As String = Tables("接头BOM").filter
        If filter3 > "" Then
            filter3 = filter3 & " and "
        End If
        filter3 = filter3 & " 原材料.substring(0,9) = '" & st3 & "'"
        Dim dr3 As DataRow = DataTables("接头BOM").Find(filter3)
        If dr3 IsNot Nothing 
            If dr3.IsNull("杆数") = False
                dr3("数量") = dr3("杆数")
                dr3("生产核对记录") = "自动核对 " & User.Name & " " & Date.Now
            End If
        End If

上述代码我是想找出 “45216-104” 字头的物料号, 请问 原材料.substring(0,9) 这里应该怎么写呢?谢谢。

 回到顶部
帅哥,在线噢!
edisontsui
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1553 积分:10082 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/1/16 8:01:00 [只看该作者]

我改成这样就可以了: 
filter3 = filter3 & " substring(原材料,1,9) = '" & st3 & "'"


 回到顶部
总数 12 1 2 下一页