以文本方式查看主题 - 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 -- 我想做一个页面集合的通用会计科目目录树,结果没有目录树显示
密码:888888
[此贴子已经被作者于2021/3/14 13:41:34编辑过]
|
||||
-- 作者:chnfo -- 发布时间:2021/3/14 19:00:00 -- 完全可以照搬帮助里的“用递归函数生成会计科目目录树” 1、没有必要将资产、负债、所有者权益、损益四类财务科目分别设表 2、还没有定义函数--AddChildren,没有定义的函数是无法引用的 3、如果一定要分开,建议使用radiobutton,不用TabControl。 4、建议精简代码
[此贴子已经被作者于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
另外,如果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编辑过]
|