以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  会计科目,一般不用3开头的科目;怎么处理?应该怎么写好?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101382)

--  作者:yancheng
--  发布时间:2017/5/29 20:32:00
--  会计科目,一般不用3开头的科目;怎么处理?应该怎么写好?
我现在在:用的,样例文件的,会计科目的文件,做的。

我把窗口口的:afterload:代码改了一下,如下:
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim rts() As String = {"全部","资产","负债","","权益","成本","损益"} 
Dim nd As WinForm.TreeNode 
Dim dt As DataTable = DataTables("会计科目") 
tr.StopRedraw()
tr.Nodes.Clear
For Each rt As String In rts
    tr.Nodes.Add(rt)
Next
For Each dr As DataRow In dt.Select("", "科目代码")
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        Dim i As Integer = CInt(dr("科目代码").Substring(0,1))
        nd = tr.Nodes(i).Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
        Functions.Execute("AddChildren1",nd,dt)
    End If
Next
图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
tr.ResumeRedraw()

[此贴子已经被作者于2017/5/29 20:32:41编辑过]

--  作者:有点蓝
--  发布时间:2017/5/31 9:28:00
--  
代码或者函数里忽略掉3开头的科目即可,没有必要增加一个空节点

For Each dr As DataRow In dt.Select("", "科目代码")
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        Dim i As Integer = CInt(dr("科目代码").Substring(0,1))
        If i <> 3 Then
            nd = tr.Nodes(i).Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
            Functions.Execute("AddChildren1",nd,dt)
        End If
    End If
Next

--  作者:yancheng
--  发布时间:2017/5/31 11:23:00
--  
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim rts() As String = {"全部","资产","负债","权益","成本","损益"} 
Dim nd As WinForm.TreeNode 
Dim dt As DataTable = DataTables("会计科目") 
tr.StopRedraw()
tr.Nodes.Clear
For Each rt As String In rts
    tr.Nodes.Add(rt)
Next
For Each dr As DataRow In dt.Select("", "科目代码")
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        Dim i As Integer = CInt(dr("科目代码").Substring(0,1))
        If i <> 3 Then
        nd = tr.Nodes(i).Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))  我会计科目里面没有3,但是这个tr.nodes(i)取的是科目表的:1.2.4.5.6;生成后,还是不对。
        Functions.Execute("AddChildren1",nd,dt)
    End If
    End If
Next
tr.ResumeRedraw()

--  作者:有点色
--  发布时间:2017/5/31 11:57:00
--  

我测试没问题,请用实例说明。

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim rts() As String = {"全部","资产","负债", "权益", "成本","损益"}
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("会计科目")
tr.StopRedraw()
tr.Nodes.Clear
For Each rt As String In rts
    tr.Nodes.Add(rt)
Next
For Each dr As DataRow In dt.Select("", "科目代码")
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        Dim i As Integer = CInt(dr("科目代码").Substring(0,1))
        If i <> 3 Then
            nd = tr.Nodes(i).Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
            Functions.Execute("AddChildren",nd,dt)
        End If
    End If
Next
tr.Nodes(3).Delete
tr.ResumeRedraw()


--  作者:yancheng
--  发布时间:2017/5/31 12:09:00
--  
嗯。红色这个加入,可以的。呵呵,只是,感觉是画一个足,再切掉。


Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim rts() As String = {"全部","资产","负债","","权益","成本","损益"} 
Dim nd As WinForm.TreeNode 
Dim dt As DataTable = DataTables("会计科目") 
tr.StopRedraw()
tr.Nodes.Clear
For Each rt As String In rts
    tr.Nodes.Add(rt)
Next
For Each dr As DataRow In dt.Select("", "科目代码")
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        Dim i As Integer = CInt(dr("科目代码").Substring(0,1))
        If i <> 3 Then
        nd = tr.Nodes(i).Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
        Functions.Execute("AddChildren1",nd,dt)
    End If
    End If
Next
tr.Nodes(3).Delete
tr.ResumeRedraw()

红色的代码,它是,取的科目代码的第一个字:我的是取出来是:1.2.4.5.6(因为,会计科目:3开头的一般不用)
所以,1对应:资产,2,负债,3为空;4,权益,5.成本 ;6损益;

--  作者:有点色
--  发布时间:2017/5/31 12:15:00
--  
4楼代码没问题,如果有问题,做实例发上来测试。
--  作者:yancheng
--  发布时间:2017/5/31 12:20:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:会计科目-没有科目3.foxdb


看:窗口2,有报错

会计科目表,我把3开口的删除了。加入了:6开头的;
[此贴子已经被作者于2017/5/31 12:23:41编辑过]

--  作者:有点色
--  发布时间:2017/5/31 14:42:00
--  
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim rts() As String = {"全部","资产","负债","成本","损益","测试"}
Dim ary() As Integer = {0, 1, 2, 4,5,6}
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("会计科目")
tr.StopRedraw()
tr.Nodes.Clear
For Each rt As String In rts
    tr.Nodes.Add(rt)
Next
For Each dr As DataRow In dt.Select("", "科目代码")
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        Dim i As Integer = ary.indexof(ary, CInt(dr("科目代码").Substring(0,1)))
        If i >= 0 Then
            nd = tr.Nodes(i).Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
            Functions.Execute("AddChildren",nd,dt)
        End If
    End If
Next
tr.ResumeRedraw()

--  作者:yancheng
--  发布时间:2017/5/31 15:00:00
--  
学习了,谢谢,色版。
写代码,逻辑与技术方法,同样重要呀。两样都得学。