我当前正在尝试从Microsoft Access数据库(.mdb)查询表之一,但是,当我尝试执行SELECT * FROM myTable
时,它给出了“未定义的用户定义类型”。我可以知道为什么吗?
这是我的示例代码:
Private Sub CommandButton1_Click()
Dim db As DAO.Database
Dim dbPath As String
Dim aQuery As String
Dim pword As String
Dim rs As DAO.Recordset
dbPath = ThisWorkBook.Path & "\Database.mdb"
pword = "password"
aQuery = "SELECT * FROM myTable"
Set db = Access.DBEngine.Workspaces(0).OpenDatabase(dbPath, True, False, ";PWD=" & pword)
Set rs = db.Execute(aQuery)
rs.MoveFirst
MsgBox rs.Fields(0)
End Sub
答案 0 :(得分:1)
使用ADO
添加参考:Microsoft ActiveX数据对象2.8库
Sub test()
Dim Conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim dbPath As String
Dim aQuery As String
Dim pword As String
Dim strcon As String
dbPath = ThisWorkbook.Path & "\Database.mdb"
pword = "abcd"
aQuery = "SELECT * FROM myTable"
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & dbPath & ";" _
& "Jet OLEDB:Database Password=" & pword & ";"
Conn.Open strcon
rs.Open aQuery, Conn
If Not (rs.EOF And rs.BOF) Then
MsgBox rs.Fields(0)
End If
rs.Close
Set rs = Nothing
Set Conn = Nothing
End Sub
使用DAO
添加参考:Microsoft DAO 3.6对象库
@Tim突出显示时,您错过了添加对库的引用。
Sub test()
Dim db As DAO.Database
Dim dbPath As String
Dim aQuery As String
Dim pword As String
Dim rs As DAO.Recordset
dbPath = ThisWorkbook.Path & "\Database.mdb"
pword = "abcd"
aQuery = "SELECT * FROM myTable"
Set db = OpenDatabase(dbPath, True, False, ";PWD=" & pword)
Set rs = db.OpenRecordset(aQuery)
rs.MoveFirst
MsgBox rs.Fields(0)
End Sub
答案 1 :(得分:0)
尝试一下:
Private Sub CommandButton1_Click()
Dim db As object, rs as object
Dim dbPath As String
Dim aQuery As String
Dim pword As String, uid as string
dbPath = ThisWorkBook.Path & "\Database.mdb"
pword = "password"
uid = "myid"
set db = createobject("adodb.connection")
with db.open
.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & _
";User ID=" & uid & ";Jet OLEDB:Database Password=""" & pword & """;"
end with
aQuery = "SELECT * FROM myTable"
Set rs = db.Execute(aQuery)
rs.MoveFirst
MsgBox rs.Fields(0)
db.close
set rs = nothing
set db = nothing
End Sub