[英]VBA Function Return SQL Value Expected Function
我有一個 MS Access 數據庫(我不是出於不使用 Access 的原因)。
我正在嘗試運行 VBA 子程序以根據參數(這是查詢結果)循環執行一些查詢。
有一個查詢對表中的列值求和。 我需要使用 IF ELSE 語句在 VBA 中使用函數返回它以繼續。
Public dbs As DAO.Database
Sub Main()
Dim SumCheck As Double
Set dbs = CurrentDb
GoTo LoopCheck
LoopCheck:
SumCheck = SOSum(dbs)
If SumCheck = 0 Then
GoTo EndPart
Else
GoTo STPTGet
End If
代碼不會從這里過去,而是當我進入代碼時,它會在此函數處停止並給出錯誤“預期函數或值”
Public Function SOSum(db As DAO.Database) As Double
Dim sumg As Double
Set db = dbs
Set sumg = db.Execute("LoopCheck")
Set db = Nothing
Set SOSum = sum
End Function
循環檢查查詢很簡單
SELECT SUM(Qty)
FROM SO;
查詢在 Access 中工作,它應該只檢查它是否為 0。
這是我的第一篇文章,所以請原諒任何不正確的格式或明顯丟失的信息。 任何幫助是極大的贊賞。
謝謝
您的代碼存在一些問題。
首先,看起來您將dbs
作為公共數據庫對象。 因此,您無需將其傳遞給您的函數。 設置好后就可以使用了。
接下來, db.execute
方法將只運行操作查詢(如 INSERT、UPDATE、DELETE...)並且它不返回任何內容。 您需要使用記錄集來獲取查詢結果。
最后,您的函數返回一個Double
,因此您不應使用Set
關鍵字返回該值。
放在一起,我們有這個:
一個數據庫對象全局聲明:
Public dbs as DAO.Database
A MAIN
Sub(問題中僅給出了部分內容):
Sub Main()
Dim SumCheck As Double
Set dbs = CurrentDb
'...
SumCheck = SOSum
'...
還有你的 SOSum 函數:
Public Function SOSum() As Double
Dim sum As Double
Dim rs As DAO.Recordset
Set rs= dbs.OpenRecordset("LoopCheck")
sum = rs(0).Value
Set rs = nothing
SOSum = sum
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.