这是我写的一段代码,技术很不成熟,希望大家体谅
数据库中的字段是这样定义的
表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中,所有的过程都正确,但是我如何能保存所建立起来的数,使下次运行的时候数任存在,请高人指点。希望有能够直接用上的代码!谢谢
数据库中的字段是这样定义的
表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中,所有的过程都正确,但是我如何能保存所建立起来的数,使下次运行的时候数任存在,请高人指点。希望有能够直接用上的代码!谢谢
DepID DepName FatherID
1 公司名 0
2 部门名 1
3 工作组 2
4 开发组 3
5 研发组 3FatherId 为父结点编号,如果是父结点则是0,否则是其父结点的编号!
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控件设定好了,数据库也绑定正确,真是奇怪啊!