Foxtable(狐表)用户栏目专家坐堂 → 会计科目,一般不用3开头的科目;怎么处理?应该怎么写好?


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

主题:会计科目,一般不用3开头的科目;怎么处理?应该怎么写好?

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
会计科目,一般不用3开头的科目;怎么处理?应该怎么写好?  发帖心情 Post By:2017/5/29 20:32:00 [只看该作者]

我现在在:用的,样例文件的,会计科目的文件,做的。

我把窗口口的: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编辑过]

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By: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()

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By: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损益;

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/31 12:15:00 [只看该作者]

4楼代码没问题,如果有问题,做实例发上来测试。

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2017/5/31 12:20:00 [只看该作者]

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


看:窗口2,有报错

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

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2017/5/31 15:00:00 [只看该作者]

学习了,谢谢,色版。
写代码,逻辑与技术方法,同样重要呀。两样都得学。

 回到顶部