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


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

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

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


加好友 发短信
等级:小狐 帖子:300 积分:2307 威望:0 精华:0 注册:2012/11/14 11:25:00
报错查不出来问题请指教  发帖心情 Post By:2013/11/23 17:23:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:家庭记帐本.zip


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20131123172240.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/23 17:41:00 [只看该作者]

.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:家庭记帐本.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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()


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部