这是我写的一段代码,技术很不成熟,希望大家体谅
数据库中的字段是这样定义的
表department中:公司名、部门名、工作组
表NodeRelation中:公司、编号1(注:存放公司名关键字生成号)、部门、编号2(注:存放部门名关键字生成号)
代码如下:
‘定义全局变量
Dim TempKey As Long
 ’交换TAB键和ENTER键
Public Sub SetEnterTab(KeyAscii As Integer)
On Error Resume Next
    If KeyAscii = 13 Then
        KeyAscii = 0
        SendKeys "{Tab}"
    End If
End Sub '定义第一个节点节点
Private Sub Form_Load()
    Dim NodX As Node
    Set NodX = TreeView1.Nodes.Add(, , Chr(1), "MicroSoft")
    Set NodX = TreeView1.Nodes.Add(Chr(1), tvwChild, Chr(2), "开发部")
    Set NodX = TreeView1.Nodes.Add(Chr(2), tvwChild, , "VB组")
End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
    Dim i As Long ‘节点生成号
    Dim NodX As Node
    i = 2
    'Dim TempCom As String
    Data1.Recordset.MoveFirst
    If KeyAscii = 13 Then
        If Text1.Text = "" Then
            MsgBox "请输入公司名!"
            Me.Show
        Else: While Data1.Recordset.EOF = Data1.Recordset.BOF
                    If Text1.Text = Trim(Data1.Recordset.Fields("公司名").Value) Then
                        On Error Resume Next
                            SetEnterTab KeyAscii
                    End If
                    Data1.Recordset.MoveNext
             Wend
             Set NodX = TreeView1.Nodes.Add(, , Chr(1 + i), Text1.Text)
             Data2.Recordset.AddNew
             Data2.Recordset.Fields("公司") = Text1.Text
             Data2.Recordset.Fields("编号1") = i + 1
             Data2.Recordset.Update
             i = i + 1
        End If
    End If
    On Error Resume Next
        SetEnterTab KeyAscii
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
    Dim i As Long
    Dim NodX As Node
    i = 200
    Data2.Recordset.MoveFirst
    If KeyAscii = 13 Then
        If Text2.Text = "" Then
            MsgBox "请输入部门名称"
            Me.Show
        Else: While Data2.Recordset.EOF = Data2.Recordset.BOF
                    If Trim(Data2.Recordset.Fields("公司").Value) = Text1.Text Then
                        TempKey = Data2.Recordset.Fields("编号1").Value
                    End If
                    Data2.Recordset.MoveNext
              Wend
              Set NodX = TreeView1.Nodes.Add(Chr(TempKey), 4, Chr(i + 1), Text2.Text)
              Data2.Recordset.AddNew
              Data2.Recordset.Fields("部门") = Text2.Text
              Data2.Recordset.Fields("编号2") = i + 1
              Data2.Recordset.Update
              i = i + 1
        End If
    End If
    On Error Resume Next
        SetEnterTab KeyAscii
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
    Dim NodX As Node
    Data2.Recordset.MoveFirst
    If KeyAscii = 13 Then
        If Text3.Text = "" Then
            MsgBox "请输入工作组"
            Me.Show
        Else: While Data2.Recordset.EOF = Data2.Recordset.BOF
                    If Trim(Data2.Recordset.Fields("部门").Value) = Text2.Text Then
                        TempKey = Data2.Recordset.Fields("编号2").Value
                    End If
                    Data2.Recordset.MoveNext
              Wend
              Set NodX = TreeView1.Nodes.Add(Chr(TempKey), 4, , Text3.Text)
              Data1.Recordset.AddNew
              Data1.Recordset.Fields("公司名") = Text1.Text
              Data1.Recordset.Fields("部门名") = Text2.Text
              Data1.Recordset.Fields("工作组") = Text3.Text
              Data1.Recordset.Update
        End If
    End If
End Sub
程序效果是当在TEXT1中输入文字时,检查是否有相同的根节点,如果相同则不创建根节点,TEXT2中输入文字,检查是否有相同的节点,如果有相同的则不创建节点,
TEXT3中输入文字,将上述三段文字建立一个数,再将其存如表department中,所有的过程都正确,但是我如何能保存所建立起来的数,使下次运行的时候数任存在,请高人指点。希望有能够直接用上的代码!谢谢

解决方案 »

  1.   

    保存建立起来的树,保存成数据库吧,结构如下:
    DepID    DepName     FatherID
    1          公司名     0
    2          部门名     1
    3          工作组     2
    4          开发组     3
    5          研发组     3FatherId 为父结点编号,如果是父结点则是0,否则是其父结点的编号!       
      

  2.   

    我在建立根节点的时候用的是这样的代码
    Private Sub Form_Load()
        Dim NodX As Node
        Do While Data1.Recordset.EOF
            Set NodX = TreeView1.Nodes.Add(, , Chr(Data1.Recordset.Fields("编号1").Value), Data1.Recordset.Fields("公司").Value)
            NodX.Tag = Data1.Recordset.Fields("编号1")
            Data1.Recordset.MoveNext
        Loop
    End Sub
    系统老是报错“错误91,对象变量或with块变量未设置”
    我明明把data控件设定好了,数据库也绑定正确,真是奇怪啊!