3

私のデータベースでは、SQL 文字列を受け取り、開いているレコードセットを返すモジュールにパブリック関数があります。この関数は、このモジュールと他のモジュールの両方で、他のパブリック サブルーチンによって呼び出されたときに問題なく動作します。

ただし、まったく同じコードを使用して同じ関数を呼び出そうとすると、「引数の数が間違っているか、プロパティの割り当てが無効です」というコンパイル エラーが発生します。

正確なコードを切り取って別のモジュールに public 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

どんな助けでも大歓迎です。

4

2 に答える 2

2

私の推測では、Queryそのカスタム VBA 関数の名前として使用すると問題が発生します。

関数の名前を からQueryfnQuery変更し、戻り値を に変更しますSet fnQuery = rsRecordSetup()次に、プロシージャ内の割り当てステートメントを次のように変更します。Set rs = fnQuery(SQL)

于 2013-04-16T16:44:37.363 に答える