2017-10-03 19 views
0

VBAを使用してアクセスするテーブルからレコードを取得しようとしています。今のところ私はこの単純な関数を持っています:クエリエディタでクエリを実行できますが、vbaで実行できないのはなぜですか?

Private Function GNCN() As String 

Dim cn As New ADODB.Connection 
Dim rs As New ADODB.Recordset 
Dim cm As ADODB.Command 
Dim strSQL As String 
Dim intYD As Integer 

Set cn = CurrentProject.Connection 
'cn.CursorLocation = adUseClient 
rs.CursorLocation = adUseClient 
rs.LockType = adLockReadOnly 

intYD = 16 

strSQL = "SELECT DCN FROM tblDCD WHERE (DCN like '" & intYD & "*')" 
Set rs = cn.Execute(strSQL) 

Debug.Print rs.RecordCount 

Set rs = Nothing 
Set cm = Nothing 
Set cn = Nothing 

End Function 

これを実行すると、返されたレコードはありません。

は、私はSQLクエリ取るしかし場合:

SELECT DCN FROM tblDCD WHERE (DCN like '16*') 

とアクセスクエリー・ビルダーの中にこれを実行すると、私の周り912のレコードが返され得るので、私は、私はレコードを取得することができるよ知っていて、そのクエリ自体正しいと思われる。

の表は、単純な(DCN欄に)のような文字列値で構成されたデータである:...合計で38000の周り

"13000" 
"17001" 
"16003" 

私はそれらをすべてここを印刷shaln'tよう

誰もがなぜこれがクエリビルダー経由では動作しますが、VBAでは動作しないのか分かりますか?

ありがとうございました

答えて

1

DAOとADODBが混在しているように見えます。検討:

Private Function GNCN() As String 

Dim rs As DAO.Recordset 
Dim strSQL As String 
Dim intYD As Integer 

intYD = 13 

strSQL = "SELECT DCN FROM Rates WHERE DCN like '" & intYD & "*';" 
Set rs = CurrentDb.OpenRecordset(strSQL) 
rs.MoveLast 
Debug.Print rs.RecordCount 

Set rs = Nothing 

End Function 
関連する問題