Foxtable(狐表)用户栏目专家坐堂 → 查找单据编号第一次和最后一次出位的行


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

主题:查找单据编号第一次和最后一次出位的行

帅哥哟,离线,有人找我吗?
bobolan521
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:632 积分:7217 威望:0 精华:1 注册:2013/11/26 7:49:00
查找单据编号第一次和最后一次出位的行  发帖心情 Post By:2017/3/2 14:53:00 [只看该作者]

Dim Names As New List(Of String)
For Each r As Row In Tables(e.Form.name & "_table2").Rows
    If Names.Contains(r("单据编号"))= False Then
        Names.Add(r("单据编号"))
    End If
Next

Dim i,j As Integer
For Each nm As String In names
    For Each r As Row In Tables(e.Form.name & "_table2").Rows          
        If nm = r("单据编号") Then
            i=i+1
        End If
    Next
    MessageBox.Show(i)
Next

图片点击可在新窗口打开查看此主题相关图片如下:ccc.jpg
图片点击可在新窗口打开查看
这段代码可以弹出每一个单据编号最后一次出现的位置,请问一下老师我要弹出第一次出现的位置,代码要怎么修改
[此贴子已经被作者于2017/3/2 14:57:09编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/2 15:45:00 [只看该作者]

Dim Names As New List(Of String)
For Each r As Row In Tables(e.Form.name & "_table2").Rows
    If Names.Contains(r("单据编号"))= False Then
        Names.Add(r("单据编号"))
    End If
Next

 

Dim i As Integer = 0
For Each nm As String In names
    For Each r As Row In Tables(e.Form.name & "_table2").Rows
        If nm = r("单据编号") Then
            msgbox("第一次" & r.Index)
            i=i+1
        End If
    Next
    MessageBox.Show("最后一次" & r.index)
Next


 回到顶部
帅哥哟,离线,有人找我吗?
bobolan521
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:632 积分:7217 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2017/3/3 13:15:00 [只看该作者]

老师你给的写法不对啊,这样的话,每次都弹出来的,而不是只弹出第一次和最后一次
[此贴子已经被作者于2017/3/3 13:28:37编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107604 积分:547323 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/3 15:47:00 [只看该作者]

Dim t As Table = Tables(e.Form.name & "_table2")
Dim Names As List(Of String) = t.DataTable.GetValues("单据编号",t.Filter)

Dim i As Integer = 0
For Each nm As String In names
    Dim idx As Integer = t.Find(nm,0,"单据编号",True,True,False)
    If idx > - 1 Then
        msgbox("第一次" & idx+1)
        For i = idx + 1 To t.Rows.Count - 1
            If nm <> t.Rows(i)("单据编号") Then
                msgbox("最后一次" & i)
                Exit For
            End If
        Next
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/3 17:27:00 [只看该作者]

如果在原来的代码修改,参考

 

Dim Names As New List(Of String)
For Each r As Row In Tables(e.Form.name & "_table2").Rows
    If Names.Contains(r("单据编号"))= False Then
        Names.Add(r("单据编号"))
    End If
Next

 

Dim i As Integer = 0
For Each nm As String In names
    For Each r As Row In Tables(e.Form.name & "_table2").Rows
        If nm = r("单据编号") Then
            msgbox("第一次" & r.Index)
            i=i+1

            Exit for
        End If
    Next
    MessageBox.Show("最后一次" & r.index)
Next


 回到顶部
帅哥哟,离线,有人找我吗?
bobolan521
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:632 积分:7217 威望:0 精华:1 注册:2013/11/26 7:49:00
  发帖心情 Post By:2017/3/3 18:38:00 [只看该作者]

谢谢老师,  For i = idx + 1 To t.Rows.Count - 1 这句应该改成   For i = idx + 1 To t.Rows.Count 要不然最后一个弹不出来的

 回到顶部