-- 作者:狐狸爸爸
-- 发布时间:2013/11/23 17:42:00
--
Dim dt As Date = e.DataRow("日期") Dim dt1 As New Date(dt.Year, dt.Month, 1) Dim dt2 As New Date(dt.Year, dt.Month, Date.DaysInMonth(dt.Year, dt.Month)) messagebox.Show(1) If e.DataCol.name = "日期" Then If e.DataRow.IsNull("日期") = False Dim Filter As String Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#" Tables("家庭帐本").Filter = Filter End If End If messagebox.Show(2) Select Case e.DataCol.Name Case "金额" Dim dr As DataRow Dim drs As List(of DataRow) drs = e.DataTable.Select("记帐类别 = \'收入\' and 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#","日期") If drs.Count = 1 Then e.DataRow("全月_收入")=e.DataRow("金额") ElseIf drs.count > 1 then drs = e.DataTable.Select("记帐类别 = \'收入\' and 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#","日期") drs(0)("全月_收入") = drs(0)("金额") For i As Integer = 1 To drs.Count-1 drs(i)("全月_收入") = drs(i-1)("全月_收入") + drs(i)("金额") Next End If End Select messagebox.Show(3) Select Case e.DataCol.Name Case "金额" Dim dr As DataRow Dim drs As List(of DataRow) drs = e.DataTable.Select("记帐类别 = \'收入\' and 日期 >= #" & dt.Year & "/1/1 # ","日期") If drs.Count = 1 Then e.DataRow("全年_收入")=e.DataRow("金额") ElseIf drs.count > 1 drs = e.DataTable.Select("记帐类别 = \'收入\' and 日期 >= #" & dt.Year & "/1/1 # ","日期") drs(0)("全年_收入") = drs(0)("金额") For i As Integer = 1 To drs.Count-1 drs(i)("全年_收入") = drs(i-1)("全年_收入") + drs(i)("金额") Next End If End Select messagebox.Show(5) Select Case e.DataCol.Name Case "金额" Dim dr As DataRow Dim drs As List(of DataRow) drs = e.DataTable.Select("记帐类别 = \'支出 \' and 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#","日期") If drs.Count = 1 Then e.DataRow("全月_支出")=e.DataRow("金额") ElseIf drs.count > 1 drs = e.DataTable.Select("记帐类别 = \'支出 \' and 日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#","日期") drs(0)("全月_支出") = drs(0)("金额") For i As Integer = 1 To drs.Count-1 drs(i)("全月_支出") = drs(i-1)("全月_支出") + drs(i)("金额") Next End If End Select messagebox.Show(4) Select Case e.DataCol.Name Case "金额" Dim dr As DataRow Dim drs As List(of DataRow) drs = e.DataTable.Select("记帐类别 = \'支出 \' and 日期 >= #" & dt.Year & "/1/1 # ","日期") If drs.Count = 1 Then e.DataRow("全年_支出")=e.DataRow("金额") ElseIf drs.count > 1 drs = e.DataTable.Select("记帐类别 = \'支出 \' and 日期 >= #" & dt.Year & "/1/1 # ","日期") drs(0)("全年_支出") = drs(0)("金额") For i As Integer = 1 To drs.Count-1 drs(i)("全年_支出") = drs(i-1)("全年_支出") + drs(i)("金额") Next End If End Select messagebox.Show(6) DataTables("家庭帐本").Save()
|
-- 作者:狐狸爸爸
-- 发布时间:2013/11/23 17:45:00
--
1、你判断了drs.count等于1和不等于1,其实drs.count还有一种可能,就是等于0,也就是没有符合条件的行时,下面的代码肯定出错:
drs(0)("全年_支出") = drs(0)("金额")
2、提问的时候,最好假单描述一下:怎么操作或者在什么地方输入什么数据会出错
3、你已经开始调试代码,很好,不过这种调试,用messagebox.show比较合适,不应该用output.show,只有需要获取某些字符串,例如表达式的时候,才有outut.show,而且必须打开命令窗口才行。
4、其实这种问题很好解决,你自己的代码执行的时候,显示2之后没有显示3、4、5,说明2和3之间的代码有错,然后在2和3之间的关键代码之间加上messagebox.show,很快你就会发现出错的代码是:
drs(0)("全月_收入") = drs(0)("金额")
知道出错的代码,基本上就知道了原因,剩余的类似代码也一样修改过来就行。
实在搞不定,就贴出代码,或者做个例子发上来,告诉大家哪一行代码出错,出错的代码是什么。
[此贴子已经被作者于2013-11-23 18:13:03编辑过]
|