2

Excel スプレッドシートがあります。ODBC 経由で Access データベースに接続しています。次の行に沿った何か:

Set dbEng = CreateObject("DAO.DBEngine.40")
Set oWspc = dbEng.CreateWorkspace("ODBCWspc", "", "", dbUseODBC)
Set oConn = oWspc.OpenConnection("Connection", , True, "ODBC;DSN=CLIENTDB;")

次に、クエリを使用して結果セットを取得し、テーブル データを取得します。

Set oQuery = oConn.CreateQueryDef("tmpQuery")
oQuery.Sql = "SELECT idField, memoField FROM myTable"
Set oRs = oQuery.OpenRecordset

問題は今発生します。コンテンツの最大長が数百文字までであるため、私のフィールドは dbMemo です。それほど長くはありません。実際、私が読んでいる値はわずか 12 文字です。しかし、Excel はメモ フィールドの内容をまったく処理できないようです。私のコード...

ActiveCell = oRs.Fields("memoField")

... エラーが発生する 実行時エラー '3146': ODBC -- 呼び出しに失敗しました。

助言がありますか?Excel VBA は実際にメモ フィールド データを取得できますか? それとも完全に不可能ですか?GetChunk からもまったく同じエラーが発生します。

ActiveCell = oRs.Fields("memoField").GetChunk(0, 2)

...また、実行時エラー '3146': ODBC -- 呼び出しに失敗しました。

テキスト フィールドに変換すると、すべてが正常に機能します。ただし、一部のデータはもちろん 255 文字に切り捨てられます。つまり、これは実行可能なソリューションではありません。

4

1 に答える 1

0
  • それが機能するかどうかを確認してくださいRange.CopyFromRecordset
  • /を使用CStr(oRs.Fields("memoField"))して割り当ててみてください。Value2RangeActiveCell
  • メモ フィールドをテーブルの最後の物理的な列にしてみてください。メモ フィールドは、取得時に読み取り専用です。物理的にテーブルの最後にないメモ フィールドに問題があった/まだある可能性があります。

今思いつく限り。

于 2010-03-31T00:10:06.110 に答える