我用ACCESS做后台库,VB做前台界面,ADO对象方法。
库中有GSB、BMB、BZB、DAB(工资表、部门表、班组表、档案表)
程序如下,但它报错,谁能帮我看看。谢谢。Private Sub Form_Activate()
Dim LQ As ADODB.Connection
Dim gsB As ADODB.Recordset
Dim bmB As ADODB.Recordset
Dim bzB As ADODB.Recordset
Dim daB As ADODB.Recordset
Set LQ = New ADODB.Connection '[人事管理]数据库实例化
Set gsB = New ADODB.Recordset '[公司]表实例化
Set bmB = New ADODB.Recordset '[部门]表实例化
Set bzB = New ADODB.Recordset '[班组]表实例化
Set daB = New ADODB.Recordset '[档案]表实例化
LQ.Provider = "microsoft.jet.oledb.4.0"
LQ.Open "data source=" & App.Path & "\data\LQ.mdb" '绑定数据库
gsB.Open "GSB", LQ, adOpenDynamic, adLockOptimistic '绑定公司表
bmB.Open "BMB", LQ, adOpenDynamic, adLockOptimistic '绑定部门表
bzB.Open "BZB", LQ, adOpenDynamic, adLockOptimistic '绑定班组表
daB.Open "DAB", LQ, adOpenDynamic, adLockOptimistic '绑定档案表
Dim i As String
Dim nodX As Node
Dim tA As ADODB.Recordset
Dim tB As ADODB.Recordset
Dim tC As ADODB.Recordset
Set tA = New ADODB.Recordset
Set tB = New ADODB.Recordset
Set tC = New ADODB.Recordset
gsB.MoveFirst
bmB.MoveFirst
bzB.MoveFirst
daB.MoveFirst
a: If Not gsB.EOF Then
Set nodX = TryTV.Nodes.Add(, , , gsB.Fields(0).Value)
i = gsB.Fields(0).Value
tA.Open "select * from BMB where 公司 ='" & i & "'", LQ, adOpenDynamic, adLockOptimistic
b: If Not tA.EOF Then
Set nodX = TryTV.Nodes.Add(1, tvwChild, , tA.Fields(1).Value)
i = tA.Fields(1).Value
tB.Open "select * from BZB where 部门 ='" & i & "'", LQ, adOpenDynamic, adLockOptimistic
c: If Not tB.EOF Then
Set nodX = TryTV.Nodes.Add(2, tvwChild, , tB.Fields(1).Value)
i = tB.Fields(1).Value
tC.Open "select * from daB where 班组 ='" & i & "'", LQ, adOpenDynamic, adLockOptimistic
d: If Not tC.EOF Then
Set nodX = TryTV.Nodes.Add(3, tvwChild, , tC.Fields(3).Value)
tC.MoveNext
GoTo d
End If
tB.MoveNext
GoTo c
End If
tA.MoveNext
GoTo b
End If
gsB.MoveNext
GoTo a
End If
End Sub
库中有GSB、BMB、BZB、DAB(工资表、部门表、班组表、档案表)
程序如下,但它报错,谁能帮我看看。谢谢。Private Sub Form_Activate()
Dim LQ As ADODB.Connection
Dim gsB As ADODB.Recordset
Dim bmB As ADODB.Recordset
Dim bzB As ADODB.Recordset
Dim daB As ADODB.Recordset
Set LQ = New ADODB.Connection '[人事管理]数据库实例化
Set gsB = New ADODB.Recordset '[公司]表实例化
Set bmB = New ADODB.Recordset '[部门]表实例化
Set bzB = New ADODB.Recordset '[班组]表实例化
Set daB = New ADODB.Recordset '[档案]表实例化
LQ.Provider = "microsoft.jet.oledb.4.0"
LQ.Open "data source=" & App.Path & "\data\LQ.mdb" '绑定数据库
gsB.Open "GSB", LQ, adOpenDynamic, adLockOptimistic '绑定公司表
bmB.Open "BMB", LQ, adOpenDynamic, adLockOptimistic '绑定部门表
bzB.Open "BZB", LQ, adOpenDynamic, adLockOptimistic '绑定班组表
daB.Open "DAB", LQ, adOpenDynamic, adLockOptimistic '绑定档案表
Dim i As String
Dim nodX As Node
Dim tA As ADODB.Recordset
Dim tB As ADODB.Recordset
Dim tC As ADODB.Recordset
Set tA = New ADODB.Recordset
Set tB = New ADODB.Recordset
Set tC = New ADODB.Recordset
gsB.MoveFirst
bmB.MoveFirst
bzB.MoveFirst
daB.MoveFirst
a: If Not gsB.EOF Then
Set nodX = TryTV.Nodes.Add(, , , gsB.Fields(0).Value)
i = gsB.Fields(0).Value
tA.Open "select * from BMB where 公司 ='" & i & "'", LQ, adOpenDynamic, adLockOptimistic
b: If Not tA.EOF Then
Set nodX = TryTV.Nodes.Add(1, tvwChild, , tA.Fields(1).Value)
i = tA.Fields(1).Value
tB.Open "select * from BZB where 部门 ='" & i & "'", LQ, adOpenDynamic, adLockOptimistic
c: If Not tB.EOF Then
Set nodX = TryTV.Nodes.Add(2, tvwChild, , tB.Fields(1).Value)
i = tB.Fields(1).Value
tC.Open "select * from daB where 班组 ='" & i & "'", LQ, adOpenDynamic, adLockOptimistic
d: If Not tC.EOF Then
Set nodX = TryTV.Nodes.Add(3, tvwChild, , tC.Fields(3).Value)
tC.MoveNext
GoTo d
End If
tB.MoveNext
GoTo c
End If
tA.MoveNext
GoTo b
End If
gsB.MoveNext
GoTo a
End If
End Sub
gsB.Open "GSB", LQ, adOpenDynamic, adLockOptimistic '绑定公司表
bmB.Open "BMB", LQ, adOpenDynamic, adLockOptimistic '绑定部门表
bzB.Open "BZB", LQ, adOpenDynamic, adLockOptimistic '绑定班组表
daB.Open "DAB", LQ, adOpenDynamic, adLockOptimistic '绑定档案表好象不能同时有多个当前连接吧!
LQ.Open "data source=" & App.Path & "\data\LQ.mdb" '绑定数据库
gsB.Open "GSB", LQ, adOpenDynamic, adLockOptimistic '绑定公司表
bmB.Open "BMB", LQ, adOpenDynamic, adLockOptimistic '绑定部门表
bzB.Open "BZB", LQ, adOpenDynamic, adLockOptimistic '绑定班组表
daB.Open "DAB", LQ, adOpenDynamic, adLockOptimistic '绑定档案表我想是连接上出了问题了吧,连接MDB文件可以不用用户名和密码这些参数吗?
报错:“实时错误‘3705’
对象打开时,不允许操作。”注:我的数据库没打开。调试显示在此语句:
tA.Open "select * from BMB where 公司 ='" & i & "'", LQ, adOpenDynamic, adLockOptimistic但只要把GOTO语句删除就没问题了。
不过删除了GOTO语句 就不能循环了。
CLOSE
比如:
gsB.close
建议在程序中最好不要这样用GOTO语句
一个字
乱!!!
这条语句是做什么的!!!
gsB.Open ......
如果不这样做(不用GOTO语句),谁还有什么好办法?
当然是再open啦
我觉得你的整个思路有问题
一个就够了
许多事情可以用SQL去做.