我想打开一个数据库,并列举出数据库中的用户表名。于是,我在窗体上添加一个按钮测试,
可是运行到Set objRs = objConn.OpenSchema(adSchemaTables),却弹出“类型不匹配”的错误。
请大侠帮忙,谢谢!Option Explicit
Dim strTableNames() As StringPrivate Sub Command1_Click()
Call getAllTableName
Dim intI As Integer
For intI = 1 To UBound(strTableNames)
Print strTableNames(intI)
Next
End Sub
'列举数据库中的表名Public Sub getAllTableName()
Dim objConn As ADODB.Connection
Dim objRs As ADODB.Connection
Dim intI As Integer, intCount As Integer
Set objConn = New ADODB.Connection
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test\DB\Test1.mdb;Persist Security Info=False"
objConn.CursorLocation = adUseClient
Set objRs = objConn.OpenSchema(adSchemaTables)
objRs.Filter = "Table_type='TABLE'"
intCount = objRs.RecordCount
If intCount > 0 Then
ReDim strTableNames(intCount)
intI = 1
While Not objRs.EOF
strTableNames(intI) = objRs.Fields("Table_Name").Value
objRs.MoveNext
intI = intI + 1
Wend
End If
Set objRs = Nothing
Set objConn = Nothing
End Sub
可是运行到Set objRs = objConn.OpenSchema(adSchemaTables),却弹出“类型不匹配”的错误。
请大侠帮忙,谢谢!Option Explicit
Dim strTableNames() As StringPrivate Sub Command1_Click()
Call getAllTableName
Dim intI As Integer
For intI = 1 To UBound(strTableNames)
Print strTableNames(intI)
Next
End Sub
'列举数据库中的表名Public Sub getAllTableName()
Dim objConn As ADODB.Connection
Dim objRs As ADODB.Connection
Dim intI As Integer, intCount As Integer
Set objConn = New ADODB.Connection
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\test\DB\Test1.mdb;Persist Security Info=False"
objConn.CursorLocation = adUseClient
Set objRs = objConn.OpenSchema(adSchemaTables)
objRs.Filter = "Table_type='TABLE'"
intCount = objRs.RecordCount
If intCount > 0 Then
ReDim strTableNames(intCount)
intI = 1
While Not objRs.EOF
strTableNames(intI) = objRs.Fields("Table_Name").Value
objRs.MoveNext
intI = intI + 1
Wend
End If
Set objRs = Nothing
Set objConn = Nothing
End Sub
换成 Objrs.open "查询表的SQL语句",objConn,1,1
我不太熟悉你这种语法。
不过建议你用SQLDMO 这样简单点。
’Dim objRs As ADODB.Connection 这是你声明的
改成Dim objRs As New ADODB.Recordset