以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 查找单据编号第一次和最后一次出位的行 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=96925) |
-- 作者:bobolan521 -- 发布时间: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 这段代码可以弹出每一个单据编号最后一次出现的位置,请问一下老师我要弹出第一次出现的位置,代码要怎么修改
[此贴子已经被作者于2017/3/2 14:57:09编辑过]
|
-- 作者:有点色 -- 发布时间:2017/3/2 15:45:00 -- Dim Names As New List(Of String)
Dim i As Integer = 0 |
-- 作者:bobolan521 -- 发布时间:2017/3/3 13:15:00 -- 老师你给的写法不对啊,这样的话,每次都弹出来的,而不是只弹出第一次和最后一次 [此贴子已经被作者于2017/3/3 13:28:37编辑过]
|
-- 作者:有点蓝 -- 发布时间: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
|
-- 作者:有点色 -- 发布时间:2017/3/3 17:27:00 -- 如果在原来的代码修改,参考
Dim Names As New List(Of String)
Dim i As Integer = 0 Exit for |
-- 作者:bobolan521 -- 发布时间:2017/3/3 18:38:00 -- 谢谢老师, For i = idx + 1 To t.Rows.Count - 1 这句应该改成 For i = idx + 1 To t.Rows.Count 要不然最后一个弹不出来的 |