Есть несколько проблем с вашим кодом.
Во-первых, похоже, что у вас есть 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