Foxtable(狐表)用户栏目专家坐堂 → 报错查不出来问题请指教


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

主题:报错查不出来问题请指教

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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()


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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编辑过]

 回到顶部