0

VBA 経由で mdb データベースに接続しようとしています。コードはまったく問題ありません。他のテーブルでクエリを実行すると、完全に正常に動作します。しかし、テーブル名「SpeedRestriction」を使用すると、クエリは行を返しません。角括弧を試しましたが、うまくいきません。データベースへの読み取り専用アクセスしかないため、既存のテーブル名を変更することはできません。コードはエラー/例外を与えません。

回避策はありますか?以下はコードです。

sPath = <Valid path>

Set conn = New ADODB.Connection
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=" & sPath


conn.Open strConnection

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient

sSql = "Select * from SpeedRestriction"

rs.Open sSql, conn, adOpenForwardOnly, adLockPessimistic, adCmdText

Debug.Print rs.EOF
Debug.Print rs.BOF

'XL_Ws_SpeedData.Range("A1").CopyFromRecordset rs
ThisWorkbook.Worksheets("Speed Data").Range("A1").CopyFromRecordset rs

Set rs = Nothing
conn.Close
Set conn = Nothing
4

1 に答える 1

0

この問題を解決しました。mdb ファイルは、vba スクリプトとは別のフォルダーに配置されました (ただし、ローカル ラップトップでは有効なパスでした)。.mdb ファイルを vba スクリプトと同じフォルダーに配置し、それに応じてスクリプト内のパスを変更しました。それは完全に正常に実行されました。しかし、他のテーブルの行がどのようにフェッチされるかをまだ理解できず、1つのテーブルだけが問題を引き起こします。それは私には意味がありません

于 2017-04-20T13:48:32.933 に答える