如何用VBA查询MS-Access数据库
所以我有一个MS Access数据库,我需要编写一个VBA代码来查找并显示某个值 这是我到目前为止得到的,但它没有任何作用如何用VBA查询MS-Access数据库,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,所以我有一个MS Access数据库,我需要编写一个VBA代码来查找并显示某个值 这是我到目前为止得到的,但它没有任何作用 Public Function findInDb() Dim mySQL As String Dim custID As Integer custID = "13" mySQL = "SELECT Orders.CustomerID FROM Orders " & _ "WHERE [CustomerID] = orderDate" DoCmd
Public Function findInDb()
Dim mySQL As String
Dim custID As Integer
custID = "13"
mySQL = "SELECT Orders.CustomerID FROM Orders " & _
"WHERE [CustomerID] = orderDate"
DoCmd.RunSQL mySQL
End Function
知道我做错了什么吗?你可以用
DlookUp
来代替
Public Function findInDb()
Dim intCustID As Integer, custID As Integer
custID = 13
intCustID = DLookup("[CustomerID]", "Orders", "[CustomerID]=" & custID)
End Function
也
Docmd.RunSQL
仅适用于操作查询(追加、更新、删除)。它不适用于Select语句 DoCmd.RunSQL不返回任何结果。因此,它运行查询,但结果CustomerID值无法返回给您
Santosh建议使用DLookup,但从性能角度来看,这是非常糟糕的。我建议使用ado;为此,您需要添加对ms access副本中“引用”列表中显示的“Microsoft ActiveX数据对象”的最新(编号最高)库的引用。定义此参考后,请使用此代码:
dim intCustID as long
dim rst as object
set rst = createObject("ADODB.Recordset")
rst.open "SELECT CustomerID FROM Orders WHERE CustomerID = " & CustID _
, currentproject.connection, adOpenStatic, adLockReadOnly
intCustID = rst.fields(0) 'or if you prefer rst!CustomerID
set rst = nothing
内置函数优于外部库 另一种方式
Sub test()
Dim rsCust As DAO.Recordset
Dim db As Database
Set db = CurrentDb
Dim custID As Integer, resultCust As Integer
custID = 2
Dim mySQL As String
mySQL = "SELECT CustomerID FROM [Orders] WHERE CustomerID =" & custID
Set rsCust = db.OpenRecordset(mySQL)
resultCust = IIf(rsCust.EOF And rsCust.BOF, -1, rsCust(0))
End Sub
这可能会有帮助:你是如何尝试运行它的?为什么不把它放在SQL查询中呢?如果你要把它放在VBA中,你对运行SQL的结果做什么?好的,那么在ms access中我想写一段VBA代码,查找并显示所需的vakue。当你在ms access中运行SQL时,你也可以得到结果。您为什么需要VBA?@user2880722如果此答案或任何其他答案适用于您,请单击旁边的复选标记接受此答案。