MS AccessのVBA ADODB Recordset.OpenテーブルOKしかし、SQLが
を失敗した私は、MS Access 2007のテーブルを持っている:
列を、私はSQLを持っているDB、モジュール、CommentID、および
コメントしていますMS Access Query Designで正しいレコードを返すクエリ。
私は、イミディエイトウィンドウで、SQLがMs Access Query DesignとVBAモジュール "Module1"で同一であることを確認しました。
私は以下のように関数を呼び出す:私は「tblComments」機能で「strSQ」を交換する場合、関数内
?LookupComment(currentproject.Name,Application.VBE.ActiveCodePane.CodeModule,"1")
その後ます。strSQLが
Select * from tblComments where DB='db1.accdb' AND Module='Module1' AND CommentID='1'
として即時ウィンドウで確認されています罰金を返します。
しかし、私がいます。strSQLでrst.openで '_Recordset' オブジェクトの '開く'
メソッドをエラーを取得していますが
Public Function LookupComment(theDB, theModule, theCommentID As String) As String
Dim cn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strSQL As String
Set cn = CurrentProject.Connection
Set rst = New ADODB.Recordset
strSQL = "Select * from tblComments where DB='" & theDB & "' AND " _
& "Module='" & theModule & "' AND CommentID='" & theCommentID & "'"
rst.Open strSQL, cn, adOpenDynamic, adLockReadOnly
' rst.Open "tblComments", cn, adOpenDynamic, adLockReadOnly
If rst.EOF = False Or rst.BOF = False Then
rst.MoveFirst
LookupComment = rst!Comment
End If
Set rst = Nothing
Set cn = Nothing
End Function
思考を失敗しましたか?
TIA
は実際に私がカッコについて考えたが、テストと、それはそれらなしでうまく働いた。 –
@IgorTurmanあなたのDAOレコードセットを意味している場合私はそれが括弧なしで動作することに同意しますが、私は括弧なしで動作するようにADOレコードセットのアプローチを得ることができませんでした。なぜそれがADOではなくDAOでは問題であるのか分かりません。テーブル名とフィールド名の予約語は避けています: – HansUp
予約名が問題でした。 – user824232