ORACLE TECHNOLOGY NETWORK
 
 
   

Oracle Technology Network (OTN) Japan - 掲示板 » データベース(R/O) » Oracle9iデータベースの部屋(読取専用)

スレッド: プロジェクト連携方式とADO+ODBC接続について

このスレッドに返信する このスレッドに返信する スレッド一覧へ スレッド一覧へ

Permlink 返信数: 5 - ページ数: 1 - 最新投稿 : 2003/03/11 9:25 最新投稿者: 初音 玲 - スレッド表示形式:
masahide789

投稿数: 21
登録日時: 02/09/02


プロジェクト連携方式とADO+ODBC接続について
投稿時刻: 2003/03/09 14:44
  このスレッドに返信します… 返信

先日参加したセミナーで、SQLサーバー+Access2002の開発では、プロジェクト連携方式(注意書き参照)を使用できるので、リンク方式(注意書き参照)を使用するよりパフォーマンスがよいとききました。
そこで、Oracle9i+Accessで開発を行い、ADO+ODBCを使用した場合に、

?ADOはJetDBエンジンを使用するのか
?ODBCはJetDBエンジンを使用するのか??(リンクテーブルはJetを使用?)
?上記疑問でJetを使用しない場合、「SQLサーバー+Access(プロジェクト連携方式)」または「Oracle9i+Access(ADO+ODBC)」のパフォーマンスの差はあるのか?

という疑問が浮かびました。

どなたかご存知の方、教えていただけないでしょうか?
よろしくお願いします。
(私が調べたところ、DAOはJetを使用。ADOはJetとは別物という風に思えたのですが・・・ODBCはJetを使用?)


※リンク方式・・・Accessのリンクテーブル(Jet経由)を使用しDBサーバーにアクセス
 プロジェクト連携方式・・・リンクテーブルを使用せず(Jet不使用)DBサーバーにアクセス

ryoichi

投稿数: 2,474
登録日時: 99/08/23


RE:プロジェクト連携方式とADO+ODBC接続について
投稿時刻: 2003/03/09 15:00   masahide789 さんへの返信です。 masahide789 さんへの返信です。
  このスレッドに返信します… 返信

>?ADOはJetDBエンジンを使用するのか

これは使用しない。別物です。

>?ODBCはJetDBエンジンを使用するのか??(リンクテーブルはJetを使用?)

JetはMDBを使用する場合に使われます。
リンクテーブルを使うという事は
Oracle Net -> Oracle ODBC Driver -> DAO(Data Access Object)
-> ACCESS
という階層でのアクセスになると思います。

>?上記疑問でJetを使用しない場合、「SQLサーバー+Access(プロジェクト連携方式)」または「Oracle9i+Access(ADO+ODBC)」のパフォーマンスの差はあるのか?

ADOという事であれば、
Oracle Net -> Oracle Provider for OLEDB -> ADO -> ACCESS
という階層だと思います。(左2つ分はOracleクライアントに含まれ
ます。)

> プロジェクト連携方式・・・リンクテーブルを使用せず(Jet不使用)DBサーバーにアクセス

逆質問ですが、最近のACCESSはよく知りませんが、ADO等を使う場合
も、フォームやレポートにバインドできるんですか?



masahide789

投稿数: 21
登録日時: 02/09/02


RE[1]:プロジェクト連携方式とADO+ODBC接続について
投稿時刻: 2003/03/09 19:35   ryoichi さんへの返信です。 ryoichi さんへの返信です。
  このスレッドに返信します… 返信

-------------------------------------------------
説明不足がありましたので追加させていただきます。

[SQLサーバー or Oracle9i] + Access

という表現をしましたが、Accessはフロントエンドとして
使用しております。従いまして、最終的にデータをアクセ
スする先は[SQLサーバー or Oracle9i]となります。

すいませんでした。
-------------------------------------------------

>JetはMDBを使用する場合に使われます。
>リンクテーブルを使うという事は
>Oracle Net -> Oracle ODBC Driver -> DAO(Data Access Object)
>-> ACCESS
>という階層でのアクセスになると思います。
この場合[DAO]が「MDBを使用する」ということになるんですね。

>逆質問ですが、最近のACCESSはよく知りませんが、ADO等を使う場合
>も、フォームやレポートにバインドできるんですか?
私もACCESS上級者というわけではありませんが、そのよう
な手法を見たことがないので普通は使用しないと思います。

> プロジェクト連携方式・・・リンクテーブルを使用せず
>(Jet不使用)DBサーバーにアクセス
このアクセス方法は[SQLサーバー+Access]のパターンのみ使用
可能です。また、「SQLサーバー上にビューを用意し、それをレポ
ートにバインドする。」という方法が「Jet不使用」に該当します。

>?上記疑問でJetを使用しない場合、「SQLサーバー+Access(プロ
>ジェクト連携方式)」または「Oracle9i+Access(ADO+ODBC)」の
>パフォーマンスの差はあるのか?
ですが、例をあげますと、
------------------------------------------------
処理:100万件ある注文データより10件を取得する。

-SQLサーバーの場合-
 プロジェクト連携方式(PG上ではリンクテーブルのように
フォーム等にバインドできるものだと理解しています。
先々日この方式を知ったところでまだ詳し理解できていな
いのですが・・・)を使用し、フィルターをフォームのレコード
ソースで指定し、目的の10件をフォームに表示する。

-Oracle9iの場合-
 ADO+ODBC(リンクテーブルは使用しない)を使用し、目的
の10件をフォームに表示する。当然ワークテーブルなどは
使用せず、フォーム上の非連結のフィールドに取得した10件
のデータを代入します。
------------------------------------------------
の場合です。
私の受けたセミナーの講師の方は
「Accessをフロントエンドで使用する場合、DBサーバーは
OracleよりSQLサーバーの方がよい」
といっていました。その理由が
「SQLサーバーとAccessの組み合わせでは、Jetを使用せず
プロジェクト連携方式を使用し、データアクセスが可能だから」
といっていました。
で、「ADOはJetとは別物」と答えていただけたので、理論上
パフォーマンスは変わらないと考えています。ですから講師
の説明の条件が「Oracle9iを使用した場合 = ADOやoofo
などを使用せず、リンクテーブルを使用した場合」と言う事に
なるのではないかと思います。

念のため、今回投稿させていただいた主旨を繰り返しますと、
---------------------------------------------------
OracleでADOなどを使用し、レポートなどにデータを表示す
るには、一度データをワークテーブルに落とすなどのオーバ
ーヘッドが必須になると思いますが、単純に「データを取得
する」という事に関して、[SQLサーバー+Access(プロジェク
ト連携方式)]と[Oracle9i+Access(ADO+ODBC)]に差があるの
か?
---------------------------------------------------
と言う事になります。

よろしくお願いします。

初音 玲

投稿数: 591
登録日時: 00/09/21


RE[2]:プロジェクト連携方式とADO+ODBC接続について
投稿時刻: 2003/03/10 10:07   masahide789 さんへの返信です。 masahide789 さんへの返信です。
  このスレッドに返信します… 返信

> >逆質問ですが、最近のACCESSはよく知りませんが、ADO等を使う場合
> >も、フォームやレポートにバインドできるんですか?
>私もACCESS上級者というわけではありませんが、そのよう
>な手法を見たことがないので普通は使用しないと思います。

Accessプロジェクトとした場合は可能です。
1)従来のMDB/MDE形式だと、AccessはDAOを使います。よってリンク
テーブルによりRDBMS(SQL Server / Oracle など)のテーブルを
設定しなければ、フォームやレポートに直接バインドできません。
2)Accessプロジェクトの場合、AccessはADOを使います。
 また、接続先としてSQL Serverが直接指定できます。Accessプロ
ジェクのウィザードを使うと簡単ですが、Oracleは指定できない
ようです(できそうな気もするのですが)。

ご質問にある、プロジェクト連携方式とは、2)の事をさすのでは、
ないでしょうか。

> ---------------------------------------------------
> OracleでADOなどを使用し、レポートなどにデータを表示す
> るには、一度データをワークテーブルに落とすなどのオーバ
> ーヘッドが必須になると思いますが、単純に「データを取得
> する」という事に関して、[SQLサーバー+Access(プロジェク
> ト連携方式)]と[Oracle9i+Access(ADO+ODBC)]に差があるの
> か?
> ---------------------------------------------------

ODBCを使うとすれば、
->ADO->OLE-DBプロバイダ->ODBC Driver Manager -> ODBC Driver->
という流れになります。Oracle9i+Access(ADO+OLE-DB)であれば、
->ADO->Oracle用OLE-DBプロバイダ->
になります。ちなみに、Accessプロジェクト+SQL Serverでも
->ADO->SQL Server用OLE-DBプロバイダ->
となります。
よって、下の2つは構造的には同じになります。
ただし、OLE-DBプロバイダによる機能や性能の違いなどはあり
ます。

ryoichi

投稿数: 2,474
登録日時: 99/08/23


RE[3]:プロジェクト連携方式とADO+ODBC接続について
投稿時刻: 2003/03/11 0:18   初音 玲 さんへの返信です。 初音 玲 さんへの返信です。
  このスレッドに返信します… 返信

>> 2)Accessプロジェクトの場合、AccessはADOを使います。
>> また、接続先としてSQL Serverが直接指定できます。Accessプロ
>> ジェクのウィザードを使うと簡単ですが、Oracleは指定できない
>> ようです(できそうな気もするのですが)。

知りませんでした。暇を見て勉強しないと。
データのリンク(この表現も昔風?)だけなら、ADOサポートのDBなら
全てOKと言う事もできるんだろうけど、クエリー/ビュー?や、
モジュール/Transact-SQL?等のサポートまで考えると(確か、使えま
すよね?)、Oracleサポートも難しいのかな?


初音 玲

投稿数: 591
登録日時: 00/09/21


RE[4]:プロジェクト連携方式とADO+ODBC接続について
投稿時刻: 2003/03/11 9:25   ryoichi さんへの返信です。 ryoichi さんへの返信です。
  このスレッドに返信します… 返信

>>> 2)Accessプロジェクトの場合、AccessはADOを使います。
>>> また、接続先としてSQL Serverが直接指定できます。Accessプロ
>>> ジェクのウィザードを使うと簡単ですが、Oracleは指定できない
>>> ようです(できそうな気もするのですが)。
>
>知りませんでした。暇を見て勉強しないと。
>データのリンク(この表現も昔風?)だけなら、ADOサポートのDBなら
>全てOKと言う事もできるんだろうけど、クエリー/ビュー?や、
>モジュール/Transact-SQL?等のサポートまで考えると(確か、使えま
>すよね?)、Oracleサポートも難しいのかな?

ADOで接続といっても、記述するSQL文まで規定されている訳ではない
ので、ADOの呼び出しインターフェースさえ合ってしまえば、技術的に
は十分可能でハードルも低いと思うのですが、多分、Oracleのサポー
トは別の面で行わないのでしょう。

データリンクの場合は、DAOになってしまいますね。Accessプロジェク
トでは、その概念はなく「インポート」のみになってますので、ADO
でOracleを使うときは、MDB形式でVBAでADOを使うか、Accessプロジェ
クトでVBAでADOを使うかとなると思います。でも、それだったら、VB
使ってプログラムするのと余り変わらない気がします。
ちなみに表題にある、ADO+ODBC接続というのは、考えない方が良いで
す。特にこれからはADOでOracleに接続する基本は、ADO+OLEDB(Oracle
用)接続です。

なお、Accessのレポート定義を使ってADOでOracleのデータを表示・印
刷する場合、裏技的ですが以下のような手段があります。

1)ブレープシティのVS-VIEWでAccessレポートをインポート
2)VB6.0(SP5)で1)でインポートした定義を使って印刷
 このとき、VS-VIEWのカスタムコントロールにADOコントロールを指定

一応、こうすれば、Accessレポートの定義でADOを使ってOracleのデー
タを指定したようになります。
ADOコントロールなどデータコントロール系は、業務システムを構築す
るときには、便利なようで柔軟性に欠けたりするので、使うかどうか
はケースバイケースなのですが、印刷とかプレビューなどで使う分に
は、比較的問題(バグではなく操作性やレスポンス)が発生しないと思
います。
# この辺りは、色々なご意見があると思います。







ウェブサイトのご使用条件 | 個人情報保護基本方針/情報保護基本方針