以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  我想做一个页面集合的通用会计科目目录树,结果没有目录树显示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161345)

--  作者:采菊东篱下
--  发布时间:2021/3/14 10:31:00
--  我想做一个页面集合的通用会计科目目录树,结果没有目录树显示
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理31402.foxdb

密码:888888

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

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


[此贴子已经被作者于2021/3/14 13:41:34编辑过]

--  作者:chnfo
--  发布时间:2021/3/14 19:00:00
--  
完全可以照搬帮助里的“递归函数生成会计科目目录树”
1、没有必要将资产、负债、所有者权益、损益四类财务科目分别设表
2、还没有定义函数--AddChildren,没有定义的函数是无法引用的
3、如果一定要分开,建议使用radiobutton,不用TabControl。
4、建议精简代码
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理31402.zip



[此贴子已经被作者于2021/3/14 19:21:20编辑过]

--  作者:采菊东篱下
--  发布时间:2021/3/14 19:12:00
--  
不搬,我是会计,知道需要怎样的,很多ERP软件都这样设计,这样归类设计好用。
--  作者:chnfo
--  发布时间:2021/3/14 19:24:00
--  
就算是归类,四大财务报表的科目可以一个数据库的表来定义,这样扩展性和维护性更好一些
包括编号、类型(资产、负债、所有的者权益、损益)、名称

另外,建议尽量少用窗口,你的窗口有点太多了,一个很小的功能也要使用窗口,不太合适。因为一个弹窗就表示用户要移动鼠标去关闭,体验不好。

如果一定要使用TabControl也可以,就是要为每个分页夹定义名称,你只定义了它们的标题(如资产、负债、……),并没有定义名称,这样是用不了。---注意标题和名称的区别
[此贴子已经被作者于2021/3/14 19:28:31编辑过]

--  作者:采菊东篱下
--  发布时间:2021/3/14 20:01:00
--  
四大会计科目方在一个数据表中不好查找,分类摆放最好,这个你不用多言,都说了我是专业会计,清楚知道需要怎样的功能,我要软件服务于人,不是人将就怎样写代码方便。
增加这么多窗口是因为有些表是隐藏的,不能在表中直接添加,要添加只能在弹窗中添加,我给每个页面写了名称了,还是报错:

图片点击可在新窗口打开查看此主题相关图片如下:0101.png
图片点击可在新窗口打开查看
Forms("会计科目").Controls("TabControl1").SelectedPage = e.sender.SelectedPage
If e.sender.SelectedPage.text = "资产类" Then
    Forms("会计科目").Controls("TabControl1").SelectedPage = Forms("会计科目").Controls("TabControl1").TabPages("资产类")
    Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
    Dim nd1 As WinForm.TreeNode
    Dim dt1 As DataTable = DataTables("资产")
    tr1.StopRedraw()
    tr1.Nodes.Clear
    For Each dr1 As DataRow In dt1.Select("","科目代码")
        If dr1.IsNull("科目代码") = False AndAlso dr1("科目代码").Length = 4 Then
            Dim i1 As Integer = CInt(dr1("科目代码").Substring(0,1))
            nd1 = tr1.Nodes(i1).Nodes.Add(dr1("科目代码"),dr1("科目代码") & " " & dr1("科目名称"))
            Functions.Execute("AddChildren",nd1,dt1)
        End If
    Next
    tr1.ResumeRedraw()
ElseIf e.sender.SelectedPage.text = "负债类" Then
    Forms("会计科目").Controls("TabControl1").SelectedPage = Forms("会计科目").Controls("TabControl1").TabPages("负债类")
    Dim tr2 As WinForm.TreeView = e.Form.Controls("TreeView2")
    Dim nd2 As WinForm.TreeNode
    Dim dt2 As DataTable = DataTables("负债")
    tr2.StopRedraw()
    tr2.Nodes.Clear
    For Each dr2 As DataRow In dt2.Select("","科目代码")
        If dr2.IsNull("科目代码") = False AndAlso dr2("科目代码").Length = 4 Then
            Dim i2 As Integer = CInt(dr2("科目代码").Substring(0,1))
            nd2 = tr2.Nodes(i2).Nodes.Add(dr2("科目代码"),dr2("科目代码") & " " & dr2("科目名称"))
            Functions.Execute("AddChildren",nd2,dt2)
        End If
    Next
    tr2.ResumeRedraw()
ElseIf e.sender.SelectedPage.text = "所有者权益类" Then
    Forms("会计科目").Controls("TabControl1").SelectedPage = Forms("会计科目").Controls("TabControl1").TabPages("所有者权益类")
    Dim tr3 As WinForm.TreeView = e.Form.Controls("TreeView3")
    Dim nd3 As WinForm.TreeNode
    Dim dt3 As DataTable = DataTables("所有者权益")
    tr3.StopRedraw()
    tr3.Nodes.Clear
    For Each dr3 As DataRow In dt3.Select("","科目代码")
        If dr3.IsNull("科目代码") = False AndAlso dr3("科目代码").Length = 4 Then
            Dim i3 As Integer = CInt(dr3("科目代码").Substring(0,1))
            nd3 = tr3.Nodes(i3).Nodes.Add(dr3("科目代码"),dr3("科目代码") & " " & dr3("科目名称"))
            Functions.Execute("AddChildren",nd3,dt3)
        End If
    Next
    tr3.ResumeRedraw()
ElseIf e.sender.SelectedPage.text = "损益类" Then
    Forms("会计科目").Controls("TabControl1").SelectedPage = Forms("会计科目").Controls("TabControl1").TabPages("损益类")
    Dim tr4 As WinForm.TreeView = e.Form.Controls("TreeView3")
    Dim nd4 As WinForm.TreeNode
    Dim dt4 As DataTable = DataTables("损益")
    tr4.StopRedraw()
    tr4.Nodes.Clear
    For Each dr4 As DataRow In dt4.Select("","科目代码")
        If dr4.IsNull("科目代码") = False AndAlso dr4("科目代码").Length = 4 Then
            Dim i4 As Integer = CInt(dr4("科目代码").Substring(0,1))
            nd4 = tr4.Nodes(i4).Nodes.Add(dr4("科目代码"),dr4("科目代码") & " " & dr4("科目名称"))
            Functions.Execute("AddChildren",nd4,dt4)
        End If
    Next
    tr4.ResumeRedraw()
End If
[此贴子已经被作者于2021/3/14 21:05:59编辑过]

--  作者:采菊东篱下
--  发布时间:2021/3/14 20:19:00
--  
不要你这种形式,我们选会计科目一直都用这种分页形式选科目,这样好用,我现在设计的功能并非我真正要做的软件,它只是我学习的练手而已。
--  作者:chnfo
--  发布时间:2021/3/14 20:45:00
--  
不必这么麻烦
在窗口中增加一个Button3,事件代码:
Dim tc As WinForm.TabControl = e.Form.Controls("TabControl1")

Dim dt As DataTable = DataTables(tc.SelectedPage.Name)

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView" & (tc.SelectedIndex + 1))
Dim nd As WinForm.TreeNode

tr.StopRedraw()
tr.Nodes.Clear

For Each dr As DataRow In dt.Select("","科目代码")
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        nd = tr.Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
        Functions.Execute("AddChildren",nd,dt)
    End If
Next
tr.ResumeRedraw()


窗口的afterload代码
e.Form.Controls("Button3").PerformClick


TabControl的SelectedIndexChanged代码
e.Form.Controls("Button3").PerformClick


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:会计科目选择窗口.zip



另外,如果4个树的节点双击事件如果完全一样,可以再增加一个button4,将4个树的节点事件放在一起维护 

--  作者:chnfo
--  发布时间:2021/3/14 20:54:00
--  
另外,你的窗口的更新目录树只是在第一个分页夹中,但貌似它是要去更新负债的树,更新目录树和查找按钮所对应的界面是不对的
更新目录树和查找功能,是针对具体的树去更新和查找,你的按钮是更新全部的4个树、查找4个树的节点,这个应当是有问题的。

更新目录树按钮一般来说,没有必要,因为切换分页夹的时候,会重新构造树。如果真要更新,切换一下分页夹就行了。
[此贴子已经被作者于2021/3/14 20:56:22编辑过]

--  作者:采菊东篱下
--  发布时间:2021/3/14 20:55:00
--  
打不开你的文件图片点击可在新窗口打开查看
--  作者:chnfo
--  发布时间:2021/3/14 20:57:00
--  
不是打开,是直接把窗口导入到你的项目里就行了。管理项目-窗口管理-会计科目-设计窗口-文件-从文件生成,选择传的窗口文件就可以了
[此贴子已经被作者于2021/3/14 20:58:18编辑过]