Foxtable(狐表)用户栏目专家坐堂 → 目录树


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

主题:目录树

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


加好友 发短信
等级:超级版主 帖子:106298 积分:540619 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/25 17:19:00 [显示全部帖子]

如果没有弹出来,说明不是红色代码的问题。重新调试一下:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错

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


加好友 发短信
等级:超级版主 帖子:106298 积分:540619 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/25 21:33:00 [显示全部帖子]

这个本来就是您的工作,当然是自己想,您开发软件,不是自己想让别人帮你想吗,这又是什么道理?要搞清楚,foxtable是一个开发平台,功能业务都是要用户自己去理清自己去开发的。我们提供的是技术支持,只是教用户怎么用好帮助文档,和学会使用foxtable的各种功能。我们既不参与用户的开发,也不提供写代码、调试和改问题服务,只能是引导用户学会判断和改正自己的问题。

我陆陆续续不断引导您学会怎么去调试代码,注意我一般在什么地方加msgbox调试代码,调试的时候提示框里会弹出什么内容帮助调试,然后根据调试结果的反馈如何去判断问题在哪里。

以87楼的调试代码为例,这个位置加提示框,绝对是可以弹出来的,运行点调试会先弹出三栏式账,然后弹出true。true对应的是msgbox(tr is nothing)里的tr is nothing,说明tr这个变量是空值。也就是没有行对应这个变量,那么后面代码再给这个变量赋值肯定就会出错的。

那么我们可以往前在看看,哪里给tr变量赋值的,为什么会没有值。具体代码应该是这段:

Dim tr As Row 定义一个变量,这时还没有值
If e.Form.DropTable IsNot Nothing Then '如果下拉窗口是从表中打开
    tr = e.Form.DropTable.Current '获取此表的当前行 很明显是窗口控件调用的,所以这里不会执行到
Else '如果下拉窗口是通过DropdownBox打开
    Dim nm As String = e.Form.DropDownBox.BindingField '获取绑定的字段
    If nm > "" Then
        nm = nm.Split(".")(0) '获取绑定的表名
        tr = Tables(nm).Current '获取此表的当前行 很明显窗口控件并没有绑定表格,所以这里也不会执行到
    Else
        If e.Node.DataRow IsNot Nothing 由于是手工使用代码递归生成的目录树,并没有绑定表格(不是通过BuildTreeCreateTreeGenerateTree方法生成不会百度表格:http://www.foxtable.com/webhelp/topics/2689.htm),所以目录树节点也不会有DataRow属性,因此这里的代码也不会执行
            e.Form.DropDownBox.Value = e.Node.DataRow("会计科目")
            e.Form.DropDownBox.CloseDropdown()
            Return
        End If
    End If
End If
因此上面这些代码最终都无法给tr变量赋值,tr就是一个空对象

再思考一下,窗口的控件既然没有绑定表格,下拉窗口里直接给控件赋值就行了吧,代码里还需要给表格赋值吗,也就是下面蓝色代码完全就是多余的
    Select Case e.Form.DropDownBox.Form.Name
        Case "三栏式账","三栏式数量金额账","多栏式明细账"
            Select Case e.Node.Level
                Case 0
                    tr("会计科目") = Vals(0)
                    e.Form.DropDownBox.Value = tr("会计科目")
                    e.Form.DropDownBox.CloseDropdown()
                Case 1
                    tr("会计科目") = Vals(0) & "-" & Vals(1).SubString(9,Vals(1).Length - 9)
                    e.Form.DropDownBox.Value = tr("会计科目")
                    e.Form.DropDownBox.CloseDropdown()
                Case 2

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


加好友 发短信
等级:超级版主 帖子:106298 积分:540619 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/25 22:39:00 [显示全部帖子]

那就给控件赋值,是不是自己测试,有问题再说。

学习先学会看文档,看文档先不要看代码,先看文字说明;其次学会调试。如果一个软件开发总共需要10分钟,就是2分准备,3分开发,5分调试

 回到顶部
总数 44 上一页 1 2 3 4 5