-- 作者:1498351234
-- 发布时间: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 & "条")
|