こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

VB6.0 DAO ORACLE ヒント使用方法に付いて

皆様、いつも御世話になっております。
OS : Windows 2003 Server
開発環境 : VB6.0 + Oracle9.2
ライブラリ : Microsoft DAO 3.6 Object Library
DAOでODBC経由でOracleに接続し、
(接続文字列 DSN=XXXX;UID=XXXX;PWD=XXXX)
ヒント句の部分がエラーになって困っております。
発行SQL文----------------------------------------------------
SELECT /*+ index( テーブル名 インデックス名) */ *
FROM テーブル名
WHERE 各種条件
ORDER BY 順序指定
-------------------------------------------------------------
発行したSQL文をコピーし、SQLPLUSで動作させた所、意図したとおりに動作しており、SQLの記述が間違っている訳ではないようです。

VBからのOracle読み込みでは、他の書き方があるのでしょか?

どなたか、ご教授お願いします。

投稿日時 - 2009-10-14 18:46:55

QNo.5367089

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

ヒント句の記載がORACLE特有のSQLであるため、ODBC経由ではうまく処理できないのではないかと思います。
ODBCにSQL文の処理をさせず直接Oracle側にSQLを投げる方法としてパススルークエリという方法があります。
なのでパススルークエリを使えばうまくいくかもしれません。

コーディングは得意でないので怪しいサンプルですが、下記のような感じでどうでしょう?
(実行環境がないので試せていません。)
===
Dim dDB As Database
Dim sSQL As String
Dim rRS As Recordset
Dim ConnectStr As String

ConnectStr= "ODBC;DSN=XXX;UID=XXX;PWD=XXX;"
sSQL = "SELECT /*+ index( テーブル名 インデックス名) */ * FROM テーブル名 WHERE 各種条件 ORDER BY 順序指定"

Set dDB = OpenDatabase("", False, False, ConnectStr)
Set rRS = dDB.OpenRecordset(sSQL, dbOpenSnapshot, dbSQLPassThrough)

・・・
===

もし、動作しないようであれば、パススルークエリについて調べて動くように修正してみてください。

===
Your DBA MOTO:TAKER

参考URL:http://www.accessclub.jp/dao/OpenRecordset.html

投稿日時 - 2009-10-31 11:03:05