老师好!
我在表中查找到了一个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 & "条")