Foxtable(狐表)用户栏目专家坐堂 → 在行集合里提取行在集合的位置


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

主题:在行集合里提取行在集合的位置

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


加好友 发短信
等级:幼狐 帖子:150 积分:1969 威望:0 精华:0 注册:2017/2/19 9:09:00
在行集合里提取行在集合的位置  发帖心情 Post By:2018/9/4 12:01:00 [只看该作者]

老师好!

我在表中查找到了一个datatable行的集合,但在这个集合里找到一个行后,明知这个行就在这个集合里,确用  drs.indextof(dr) 提取不出来这个行的位置。不知道问题出在哪里。麻烦给看一下。谢谢!

Dim df,jf,ye,sqye As Double  '定义贷方借方余额上期余额
Dim n,m,nn,mm,i,ii As Integer 
Dim rqxh As String   '定义流水编号用的中间变量
Dim rq As Date
rq =   #11/30/2017#    '指定日期
Dim drs As List(Of DataRow)                '查找所有这个日期的记录
drs = DataTables("银行流水").Select(" [日期] = '"  & rq  & "' and 收款行 = '工行长治路'")   '
'msgbox(rq & "这天共有"  & drs.Count   & "记录")
Dim lsbhs As new List(of String)  '定义将要分配的流水编号
For i =0 To drs.Count-1   '给流水编号集合赋值
    rqxh =cstr(rq).Remove(7,1).remove(4,1).Substring(2)  &  format(i,"""_""000")  '删除日期中的"-" ,格式化后缀序号
    If drs(i)("贷方发生额")>0 And drs(i)("收款行").contains("长治") Then     '增加流水编号前缀
        lsbhs.add("CD" & rqxh)
    ElseIf drs(i)("借方发生额")>0 And drs(i)("收款行").contains("长治")  Then
        lsbhs.add("CJ" & rqxh)
    ElseIf drs(i)("借方发生额")>0 And drs(i)("收款行").contains("高新")  Then
        lsbhs.add("GJ" & rqxh)
    ElseIf drs(i)("贷方发生额")>0 And drs(i)("收款行").contains("高新")  Then
        lsbhs.add("GD" & rqxh)
    End If
Next
For i =0 To drs.Count-1     '分配的编号与记录编号比对
    output.Show("记录" & drs(i)("流水编号"))
    output.Show("编号"  & lsbhs(i))
Next
If drs.Count >0  Then  '查找上期余额的行
    For i =0 To drs.Count -1
        ' msgbox(drs.Indexof(drs(i)))
        rq = drs(i)("日期")
        ye =   drs(i)("余额")
        jf = drs(i)("借方发生额")
        df = drs(i)("贷方发生额")
        sqye  = ye - jf + df   '计算上期余额
        Dim dr As DataRow = DataTables("银行流水").Find("[收款行]='工行长治路' and [余额] =" & sqye  &  " And [日期]> = '"  & rq.AddDays(-10)  & "'  and  [日期] <'"  & rq.AddDays(+1)  &  "'" ,"日期 Desc",0 )   '查找上期记录
        If dr IsNot Nothing Then
            If dr("日期")< rq Then
              drs(i)("流水编号") = lsbhs(0)   '这一行屏蔽了也不行返不回在drs里的位置
                n=n+1
            ElseIf dr("日期") = rq Then
               'drs(i)("流水编号") = lsbhs(drs.Indexof(dr)-1)) '这是上一行在drs里面的位置-1 从编号集合里面取出来送给 drs(i)("流水编号")
                 msgbox(drs.Indexof(dr)) '这是上一行在drs里面的位置-1 从编号集合里面取出来送给 dr("流水编号")   但在这里msgbox(drs.Indexof(dr)),总是显示-1无法取出 drs(i) 的位置.
                nn=nn+1
            End If
            m=m+1
        End If
    Next
End If
msgbox("找到记录"  &  m & "条当日记录" & nn & "条前日记录" & n & "条")

以下内容为程序代码:

1 Dim df,jf,ye,sqye As Double '定义贷方借方余额上期余额
2 Dim n,m,nn,mm,i,ii As Integer
3 Dim rqxh As String '定义流水编号用的中间变量
4 Dim rq As Date
5 rq = #11/30/2017# '指定日期
6 Dim drs As List(Of DataRow) '查找所有这个日期的记录
7 drs = DataTables("银行流水").Select(" [日期] = '" & rq & "' and 收款行 = '工行长治路'") '
8 'msgbox(rq & "这天共有" & drs.Count & "记录")
9 Dim lsbhs As new List(of String) '定义将要分配的流水编号
10 For i =0 To drs.Count-1 '给流水编号集合赋值
11 rqxh =cstr(rq).Remove(7,1).remove(4,1).Substring(2) & format(i,"""_""000") '删除日期中的"-" ,格式化后缀序号
12 If drs(i)("贷方发生额")>0 And drs(i)("收款行").contains("长治") Then '增加流水编号前缀
13 lsbhs.add("CD" & rqxh)
14 ElseIf drs(i)("借方发生额")>0 And drs(i)("收款行").contains("长治") Then
15 lsbhs.add("CJ" & rqxh)
16 ElseIf drs(i)("借方发生额")>0 And drs(i)("收款行").contains("高新") Then
17 lsbhs.add("GJ" & rqxh)
18 ElseIf drs(i)("贷方发生额")>0 And drs(i)("收款行").contains("高新") Then
19 lsbhs.add("GD" & rqxh)
20 End If
21 Next
22 For i =0 To drs.Count-1 '分配的编号与记录编号比对
23 output.Show("记录" & drs(i)("流水编号"))
24 output.Show("编号" & lsbhs(i))
25 Next
26 If drs.Count >0 Then '查找上期余额的行
27 For i =0 To drs.Count -1
28 ' msgbox(drs.Indexof(drs(i)))
29 rq = drs(i)("日期")
30 ye = drs(i)("余额")
31 jf = drs(i)("借方发生额")
32 df = drs(i)("贷方发生额")
33 sqye = ye - jf + df '计算上期余额
34 Dim dr As DataRow = DataTables("银行流水").Find("[收款行]='工行长治路' and [余额] =" & sqye & " And [日期]> = '" & rq.AddDays(-10) & "' and [日期] <'" & rq.AddDays(+1) & "'" ,"日期 Desc",0 ) '查找上期记录
35 If dr IsNot Nothing Then
36 If dr("日期")< rq Then
37 drs(i)("流水编号") = lsbhs(0) '这一行屏蔽了也不行返不回在drs里的位置
38 n=n+1
39 ElseIf dr("日期") = rq Then
40 'drs(i)("流水编号") = lsbhs(drs.Indexof(dr)-1)) '这是上一行在drs里面的位置-1 从编号集合里面取出来送给 drs(i)("流水编号")
41 msgbox(drs.Indexof(dr)) '这是上一行在drs里面的位置-1 从编号集合里面取出来送给 dr("流水编号") 但在这里msgbox(drs.Indexof(dr)),总是显示-1无法取出 drs(i) 的位置.
42 nn=nn+1
43 End If
44 m=m+1
45 End If
46 Next
47 End If
48 msgbox("找到记录" & m & "条当日记录" & nn & "条前日记录" & n & "条")


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/4 12:10:00 [只看该作者]

没办法。必须循环drs的每一行,比较各列的值,才能比较的。

 


 回到顶部