Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7318|回复: 11

Treeview+Ado+Access科目设置

[复制链接]
发表于 2008-10-25 23:16 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2012-7-6 19:25 编辑

 从网上东抄西拉,从各位高手那边取经,此系统主要代码和构思来自于无相大师,佩服其精神以及技术之外,自己把代码稍许改动Treeview+Ado+Access相结合,代码烦琐一点,第一次初稿,还没有时间进行模块化,还可优化,请大家指导.

 在表格的黄色区域,双击单元格,就可以调出窗体,再双击 TREEVIEW后,如果有子科目,那么总帐科目和子科目都会填入相应表格内,如果没有子科目,那么只有总帐科目有数值。如果要删除黄色区域某一行,只要删除删除黄色区域一个单元格,那么一整行全部会删除。几个单元格删除,那么就删除几个整行。
可修改科目,删除科目,插入科目,可增加子科目。


 

xLlFxiFe.rar (79.49 KB, 下载次数: 136)

[分享]★Treeview+Ado+Access(科目设置)★-之降龙十八掌

[分享]★Treeview+Ado+Access(科目设置)★-之降龙十八掌

[分享]★Treeview+Ado+Access(科目设置)★-之降龙十八掌

[分享]★Treeview+Ado+Access(科目设置)★-之降龙十八掌

[分享]★Treeview+Ado+Access(科目设置)★-之降龙十八掌

[分享]★Treeview+Ado+Access(科目设置)★-之降龙十八掌

FnUueRjp.rar

76.95 KB, 下载次数: 107

[分享]★Treeview+Ado+Access(科目设置)★-之降龙十八掌

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2008-10-26 00:59 | 显示全部楼层

在UserForm4代码修改一下

Private Sub CommandButton1_Click()
    Dim r As Integer
    Set Itm = UserForm2.TreeView1.SelectedItem
    Set cnn = CreateObject("ADODB.connection")
    Set rst = CreateObject("ADODB.recordset")
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\db1.mdb"

    Nameofaccounts = Me.TextBox4.Value

    If Me.TextBox3.Text <> Mid(Itm.Key, 5) Then
        sql = "SELECT 科目编码 From zykmb where 科目编码= '" & Me.TextBox3.Text & "'"    '判断科目编码=是否已经存在
        rst.Open sql, cnn, 3, 1
        If rst.RecordCount > 0 Then
            MsgBox "你的科目编码已存在,请重新输入"
            Me.TextBox3.SetFocus
            Exit Sub
        End If
        rst.Close
    End If

    If Me.TextBox3.Text = "" Or Len(Me.TextBox3.Text) <> Me.TextBox1 Then
        MsgBox "请输入科目编码或者你的编码长度不够"
        Me.TextBox3.SetFocus
    ElseIf Left(Trim(Me.TextBox3.Text), 1) <> Left(Trim(Me.TextBox5.Text), 1) Then
        MsgBox "请注意编码规律"
    ElseIf Me.TextBox4.Text = "" Then
        MsgBox "请输入科目名称"
        Me.TextBox4.SetFocus
    ElseIf Me.OptionButton1 = False And Me.OptionButton2 = False Then
        MsgBox "请输入科目方向"
        Me.TextBox6.SetFocus
    Else

        If Len(Mid(Trim(Itm.Key), 5)) > 4 Then    '如果大于4,则表明有明细科目,要兼顾总帐科目和明细科目 ,Name of accounts
            If Left(Trim(Me.TextBox3.Text), 4) <> Left(Trim(Me.TextBox5.Text), 4) Then
                MsgBox "明细科目编号前4位与总账科目前4位不同":
                Exit Sub
            End If
            sql = "SELECT 总账科目 From zykmb where 科目编码= '" & Left(Trim(Me.TextBox5.Text), 4) & "'"
            rst.Open sql, cnn, 3, 1
            If rst.RecordCount > 0 Then
                Nameofaccounts = rst.fields(0)
            End If
            rst.Close
        End If

        sql = " update zykmb set  "
        sql = sql & "科目编码= '" & Me.TextBox3.Text & "',"
        sql = sql & "助记码= '" & Me.TextBox6.Text & "',"
        sql = sql & "总账科目= '" & Nameofaccounts & "',"
        sql = sql & "明细科目= '" & IIf(Len(Me.TextBox3.Text) > 4, Me.TextBox4.Text, Empty) & "',"
        sql = sql & "方向= '" & IIf(Me.OptionButton1 = True, "借", "贷") & "',"
        sql = sql & "期初金额 = " & IIf(IsNumeric(Me.TextBox7.Text), Me.TextBox7.Text, 0) & " "
        sql = sql & " where 科目编码 = '" & Mid(Trim(Itm.Key), 5) & "'"
        cnn.Execute sql
        cnn.Close
        Set cnn = Nothing
        Call Tree
        Me.Hide
    End If
End Sub
回复

使用道具 举报

发表于 2008-10-26 13:56 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2008-10-26 14:14 | 显示全部楼层

谢谢mxg825高手,我希望高手能提供意见,因为我想最终完成一套完整财务软件,请提供帮助。
回复

使用道具 举报

发表于 2008-11-24 22:30 | 显示全部楼层

太激动了,这个就是我想要的!

请问如果在窗体上加上搜索功能,快速定位到某节点在技术上实现是否有难度?

回复

使用道具 举报

发表于 2010-9-27 20:30 | 显示全部楼层

Treeview+Ado+Access(科目设置)★
回复

使用道具 举报

发表于 2010-9-28 10:18 | 显示全部楼层

想法不错,支持一下
回复

使用道具 举报

发表于 2011-10-31 20:07 | 显示全部楼层
{:3512:}学习
回复

使用道具 举报

发表于 2012-3-6 12:41 | 显示全部楼层
好,学习一下,谢谢。
回复

使用道具 举报

发表于 2012-3-9 15:29 | 显示全部楼层
很好 很强大 支持{:35:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 17:59 , Processed in 0.548975 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表