• 締切済み
  • すぐに回答を!

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読み込みでは、他の書き方があるのでしょか? どなたか、ご教授お願いします。

共感・応援の気持ちを伝えよう!

  • Oracle
  • 回答数1
  • 閲覧数1833
  • ありがとう数2

みんなの回答

  • 回答No.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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • VB5+DAO3.5でSQLサーバーに接続方法

    実行環境はNT4.0、DAOは3.5(3.51ではない) VB5でSQLサーバーに接続したいのですが、 できるのでしょうか? できればODBC経由でなく直に繋ぎたいのですが、むりならODBC経由でもいいです。 サンプルコードをお願いいたします。 1)DB接続、2)SQL文発行&レコードセット取得 位まであればありがたいです。 上記が無理の場合RDOでの使用方法があれば お願いいたします。

  • VB+Oracleで「特定できないエラー」

    皆様、いつも御世話になっております。 OS : Windows 2003 Server 開発環境 : VB6.0 + Oracle8 ライブラリ : Microsoft ActiveX DataObjects 2.8 Library ADOでODBC経由でOracleに接続し、 (接続文字列 DSN=XXXX;UID=XXXX;PWD=XXXX) Set rst = New ADODB.Recordset sql = "select * from TBL0001" ●rst.Open sql, cnn, adOpenStatic, adLockOptimistic do while not rst.eof rst("FLD0001")=XXXX ..... この●の行で「特定できないエラー」と出てしまいます。 詳細も不明なので、原因が全くわかりません。 稀にうまく動作するのですが、ある程度レコード処理をして、再度●へ戻るとエラーが出ます。 お手数ですが、宜しくお願い致します。

  • ORACLEデータをACCESSへインポート VB

    OracleのデータをAccessへインポートする方法について、どなたかご教授ください。 VB.NETで OracleからAccessへのデータコンバート機能を作ることになりました。 (環境 OS;Win7 言語;VB2008 Oracle;10g Access;2010) 対象のテーブル数、フィールド数、データ数がかなり多いのですが、Accessへデータをインポート(コピー)する良い方法はないでしょうか? 普段、データ入力が専門のためプログラムは初心者です。 今のところOLE DBを使用して1行ずつデータを登録する方法しかできません・・・ ヘルプを参考に、ODBCでDSNレスのINTO(SQL)を挑戦しているのですが「入力テーブルまたはクエリが見つかりません」と出てしまいます。 ◇質問 (1).複数のテーブルをAccessへコピーするにはどんな方法がありますか?   また、このような対象テーブルが多い場合に有効な方法は? (2).ODBCでDSNレスのINTO(SQL)を作成するのに注意することはありますか? ちなみにエラーが出てしまうSQL文は以下です。違っているでしょうか? cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=D:\DATA\DB.mdb" sql = "SELECT * INTO impテーブル名 " & _ "FROM [ODBC;DRIVER={Microsoft ODBC for Oracle};" & _ "SERVER=" & orSorc & ";" & _ "UID=" & orUsrID & ";" & _ "PWD=" & orPswd & "].expテーブル名" ※ Oracleは10g/11gのバージョンが存在するためODPは使用しません

  • DAOでテーブル名を取得したい

    Windows2000 & VB6 テーブルの数も各テーブルの名前も不明なMDBファイルにDAOで接続して、全てのテーブル名を取得する方法がわかりません。 どなたか教えてください。

  • VB6より長文INSERT文でORA1756単一引用符が閉じられていないが発生する

    初めまして。 VB6、ORACLE8iでダイナセットを使用しテーブルに対してINSERT文を 発行していますが、INSERT文が長文になると”単一引用符が閉じられていません” とエラーが返ってきます。このSQL文と同一のものをPLUSにて実行させても 同一のエラーが発生するのですが、メモ帳等で改行して一行を短くすると 正常にINSERTされます。 それならと思い、SQL文作成コード内に改行コードを挿入したのですが VB上からは同じようにエラーが返ってきます。改行コード入りのSQL文を イミディエイトより取り込みPLUSにて実行させると正常に動作します。 どうすればVB上から正常実行できるのでしょうか? 初心者ゆえどうすればよいかさっぱりわからなくなりました。 VB上からは何か制約があるのでしょうか? どなたかご存知の方ご教授願います。 長文失礼しました。

  • ORACLEのようにトレースがとれるでしょうか?

    ADO+ODBC接続でSQLサーバーからデータを抽出・更新するのですが、 ORACLEのように実行時のSQLのトレースは取れるでしょうか? SQL文の実行計画はクエリアナライザでわかるのですが… なぜトレースを取りたいかというと、以前ACCESS2000 + ORACLE + ODBC + DAO3.6で、 開発していたときに、コーディングで作成したSQLをODBCあるいはJETが SQLを勝手に書き換えて実行していたのでインデックスが効かないということがありました。 今回はADOを使用するのですが、勝手にSQL文を書き換えて、 インデックスが効かないという事象が発生しないか心配しております。 みなさんよろしくおねがいします。(つたない文章ですみません。m(_ _)m) 開発環境 ************************************************ OS:Windows2003 server Standard Edition SQLサーバー: SQLSERVER2000 クライアント VB.NET クライアントとサーバーの接続 Microsoft ActiveX Data Objects 27. Library ODBC接続 ************************************************

  • Oracle8iの使用方法について

    今回、初めてOracleを扱うことになりました。 やることは、PL/SQLのプログラムを作成、 テストです。 現在、PL/SQLのプログラムを作成しました。 これから後の作業で使用するツール(画面)が よくわからないので教えてください。 1.コンパイル SQLPLUSで、ファイルを開いて、「@ファイル名.sql」で コンパイルでいいのでしょうか? WorkSheetでも出来ると聞いたのですが、 どのツールが便利でしょうか? 2.テスト 作成したPL/SQLのプログラムを実際 試す場合、SQLPLUSの実行でいいのでしょうか? 実際のプログラムの内容は、 あるファイルを読みこんで、テーブルのデータを 更新する、といったものなんですが・・・ ★その他質問 1)CSEというソフトをダウンロードしたのですが、 これは、Accessのように使えるんですか? テストで使うデータは、Accessのように、 CSEで値を入力すればいいんでしょうか? データは一般的にどのツールで作成するのが いいのでしょうか? 2)オブジェクトブラウザというのは、なんのことでしょうか? 3)他に、Oracleで使用するメジャーなツール がありましたら、教えてください。 以上、初歩的な質問で申し訳ありませんが よろしくお願いします。

  • ACCESSデータベースにVB6(DAO)でフィールドを追加したい

    既存のACCESSデータベースのテーブルにVB6のDAOでフィールドを追加したいのですが、テーブル名.Fields.Append とかいうメソッドがあるようですが、使用方法がわからずフィールドを追加が出来ません。 具体的には、フィールド名"電話番号"で、文字型で固定文字数13を追加したいのです。 どうぞよろしくお願いします。

  • ExcelVBAでのOracleデータベースへのSQL文発行

    Excelにデータベースのデータ構造を書いたファイルがあります。 それをVBAでOracleに直接SQL文を発行してテーブルを作成したいのですが、VBみたいにoo4oをつかって、Oracleに接続することは可能ですか? カテゴリーが違うかもしれませんが、ここで聞いたほうがわかるとおもったので、質問させてもらいました。 よろしくおねがいします。

  • vb.netでSQL serverの接続を行うコーディング

    vb.net (vb 2005)でSQL serverの接続を行うコーディングがよくわかりません。 ADO,もしくはDAOを使うところまでわかったのですが、具体的なコーディングがわかりませんでした。 VBの教本とかではSQL serverではなくAccesへの接続だったので、どうコーディングしてよいか混乱しています。 (ADOの場合とDAOの場合の違い)