2013-04-12 71 views
2

在我的數據庫中,我有一個模塊中的公共函數,它接收一個SQL字符串並返回一個打開的記錄集。此功能在由其他公共子公司調用時很好,無論是在此模塊還是在其他模塊中。在不同模塊中訪問VBA表單Private Sub調用公共函數

但是,如果我嘗試使用相同的確切代碼調用相同的函數,我會收到一個編譯錯誤:「錯誤的參數數量或無效的屬性分配。」

如果我將正確的代碼剪切並粘貼到不同的模塊中作爲公共子,它將正常工作。我懷疑這個問題與命名或隱藏的變量有關。不幸的是,我無法通過搜索找到任何解決方案。

Public Function Query(SQL As String) As ADODB.Recordset 
    Dim cnnConn As ADODB.Connection 
    Dim rsRecord As New ADODB.Recordset 
    Set cnnConn = CurrentProject.Connection 
    rsRecord.ActiveConnection = cnnConn 
    rsRecord.Open SQL 
    Set Query = rsRecord 
End Function 

Private Sub Setup() 
    Dim rs As New ADODB.Recordset 
    Dim SQL As String 
    SQL = "Select * FROM [Configuration]" 
    Set rs = Query(SQL) <--- Compile Error 
    rs.Close 
End Sub 

任何幫助,非常感謝。

+2

如果將函數從Query改名爲fnQuery,則將其返回值更改爲Set fnQuery = rsRecord,然後將Setup()更改爲'設置rs = fnQuery(SQL)'...它工作嗎? – HansUp

+0

電力在辦公室裏走了出來,然後我可以試一試。我會在星期一進行測試。謝謝。 – Del

+0

就是這樣。謝謝。我以爲我的名字很清楚,因爲它是從另一個分支開始工作的。希望這會教會我遵循適當的命名語法。 – Del

回答

1

我的預感是使用Query作爲定製VBA的名稱問題結果功能。

將函數從Query重命名爲fnQuery,並將其返回值更改爲Set fnQuery = rsRecord。然後將Setup()過程中的賦值語句更改爲Set rs = fnQuery(SQL)

1

我一直在使用調試發現>編譯發現了很多的VBA問題 - 它會突出了許多錯誤:

enter image description here

相關問題