SQL VB 3.0 のクエリで複数のデータベースにアクセスするには、方法

文書翻訳 文書翻訳
文書番号: 113701
すべて展開する | すべて折りたたむ

目次

概要

同時に複数のデータ ソースからのデータにアクセスするときは、1 つのクエリ、おそらく最速かつ最も一般的な使用しますメソッドの 1 つに、さまざまなデータ ソースからテーブルを添付:Microsoft Access データベースです。この時点で、そのスパン 2 つの異なるクエリを実行します。すべてのテーブル、添付またはローカルのようにデータベースを構築します。ローカルの Microsoft Access データベースにします。
テーブルのアタッチ強力なパフォーマンス、および管理の利点を持つ:特に、クエリを繰り返し実行する場合。ただし、場合によっては遅くに、必要なときにこの資料に記載する方法について説明することができます。2 つ以上のデータベースを包含するアドホック クエリを使用します。この資料でこのような低速のクロス データベース クエリを構築する方法について説明します。

詳細

2 つの方法は、1 つの外部データベースを指定できます。開いています。

方法 1

Microsoft Access の SQL に接続することができますは、IN 句を提供します。外部データベース (現在のデータベース以外のデータベース)。このメソッドただし、一度に 1 つだけの外部データベースを制限は。

IN 句にデータベース名と接続文字列の 2 つの部分があります。データベース名前は完全修飾パスをファイルまたはディレクトリが含まれている、データベース ・ ファイルと接続文字列ではデータベースの種類とその他必要なパラメーターです。

外部データベースを指定するには、セミコロン (;) を追加します接続する。部品、および、単一引用符または二重引用符 () で囲みます。次に、例は IN 句を使用して、dBASE IV のテーブル (顧客) を指定するにはデータベース (売り上げ高)。
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
Visual Basic では、ダイナセット、前述の例で作成できます。Visual Basic に次のコードを使用します。
Dim db As Database
Dim ds As Dynaset
Dim sql As String

' Open a database:
Set db = OpenDatabase("C:\VB\BIBLIO.MDB")

' Build the select statement, referencing the external dBASE IV file:
sql = "SELECT Customers.CustomerID, FROM Customers"
sql = sql & " IN 'C:\DBASE\DATA\SALES' 'dBASE IV;'"
sql = sql & " WHERE Customers.CustomerID Like 'A*'"

' Create the recordset:
Set ds = db.CreateDynaset(sql)

' Loop through and display the records:
While Not ds.EOF
   For i = 0 To ds.Fields.Count - 1
      Print ds(i); "  ";
   Next i
   Print
   ds.MoveNext
Wend
				

方法 2

Microsoft Access エンジン Visual Basic バージョン 3.0 に組み込むことができます。データベースを開くときに使用する接続文字列を含めるには、SQL クエリを解析します。オブジェクトです。SQL ステートメントの From 句を完全修飾に受け入れるテーブル名は、接続文字列内の四角形の配置を許可角かっこ、テーブル名の前にします。接続文字列を分離してから、テーブル名にピリオドがします。このメソッドに複数接続することができます。外部データベースで同時にします。

任意のテーブルでは、2 つのデータベース内で 1 つの選択のいずれかにアクセスできます。この構文を使用してステートメント:
SELECT tbl1.fld1,tbl2.fld1
FROM [odbc;dsn=datasource;database=pubs;Username= <username>;PWD=<strong password>].tbl1,
[dbase iii;database=C:\DBASE3].tbl2
WHERE tbl1.fld1 = tbl2.fld1
				
次の使用例、ODBC いずれか 2 つの異なるデータベースの 2 つのテーブルを結合します。データ ソースと dBASE III テーブル、ディレクトリ C:\DBASE3 にします。

一般に、ここで角かっこを使用して、接続文字列と同じです。Connect プロパティをアタッチする場合は、テーブル定義または 4 番目のパラメーター追加のステートメントが。それに応じて 3 つの形式のいずれかになります。データベースに ODBC、ISAM では、(Microsoft Access) です。

ODBC データベースの場合。
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
ISAM データベースにします。
   [paradox 3.X;database=C:\DATABASE\PARADOX3]
   [foxpro 2.5;database=C:\DATABASE\FOX25]
   [dbase iv;database=C:\DATABASE\DBASEIV]
   [btrieve;database=C:\DATABASE\BTRIEVE\FILE.DDF]
				
Microsoft Access データベースの場合。
   [;database=C:\VB\BIBLIO.MDB]
				
メモ 先頭のセミコロンを Microsoft Access のデータベースは、必要があります。これの Connect プロパティを設定するために必要な正確に文字列と同じですがMicrosoft Access の形式にテーブルをアタッチする前に、テーブル定義オブジェクトデータベースです。先頭のセミコロンは、不要なデータベースのプレース ホルダーです。仕様の書式を設定し、できるように、"データベース ="句を実行します。

複数のデータベース クエリの例

この例は、2 つのデータ ソースからの 2 つのテーブルを結合するダイナセットを作成、SQL Server と、他の Access データベースです。TestTabテーブル、SQL Server であり、T1 テーブルを Microsoft Access では、あります。データベースです。

メモ <username>を変更する必要があり、<strong password="">にこのコードを実行する前に、適切な値。ユーザー名がデータベースを処理するのには、適切なアクセス許可を持っているかどうかを確認します。</strong></username>
Dim db As database
Dim ds As dynaset
Dim sql As String, Uid$, Pwd$

Set db = OpenDatabase("C:\VB\BIBLIO.MDB")
' This obtains a valid database object. It does not have to be a Microsoft
' Access database; the following works equally as well:
' Set db = OpenDatabase("C:\FOXPRO25\", 0, 0, "foxpro 2.5")

' The values here are hard-coded, but you could prompt the user for their
' user id and password.
Uid$ = <username>
Pwd$ = <strong password>

' Build the select statement, concatenating the user's id and password:
sql = "SELECT T1.F2, TestTab.F2, TestTab.F3"
sql = sql & " FROM [;database=C:\ACCESS\DB1.MDB].T1 , "
sql = sql & " [odbc;dsn=texas;database=playpen;Username=" & Uid$
sql = sql & ";PWD=" & Pwd$ & "].TestTab"
sql = sql & " WHERE T1.F1 = TestTab.F1"

' Execute the select query:
Set ds = db.CreateDynaset(sql)

' Loop through and display the records:
While Not ds.EOF
   For i = 0 To ds.Fields.Count - 1
      Print ds(i); "  ";
   Next i
   Print
   ds.MoveNext
Wend
				

セキュリティで保護された Microsoft Access データベースの特別な注意について

Microsoft Access データベースをセキュリティで保護する場合、Visual Basic アプリケーションSetDataAccessOption と SetDefaultWorkspace コマンドを実行する必要があります。実行する前にコードの関連データにアクセスします。これは必要ですが正常に Microsoft Access を使用していないためにログオン、」ユーザー名 ="と"PWD ="セクションの接続文字列。たとえば。
   ' Establish the location of the SYSTEM.MDA files if in another
   ' directory other than the \WINDOWS directory:
   SetDataAccessOption 1, "C:\MYDIR\MYAPP.INI"
   ' Log on to a valid account:
   SetDefaultWorkspace "admin", "<password>"
				
これを行うと、セキュリティで保護された Microsoft Access データベースへのクエリをします。成功します。ただし、このプロセスのためがあります組み込みです。このアドホック手法の制限です。Microsoft Access は 1 つだけをセキュリティで保護アドホック クエリがデータベースにアクセスできます。これからですと、セッションで、特定のユーザーが Microsoft Access エンジンが初期化されます。名前とパスワードの組み合わせ、それらの値がセッションまで維持されますVisual Basic の実行可能プログラムまたはセッション、環境、VB. のEXE 実行形式)終了します。

ただし場合に、次の 2 つのセキュリティで保護された Access データベースする必要があります。クエリのアクセス、最善の方法は実際のテーブルから移動することセキュリティで保護されたデータベースをセキュリティで保護されたデータベースの 1 つにします。これを行うには、変更する必要があります。admin アカウントのパスワードを""は、転送中に一時的に操作します。Visual Basic コード、データなどを使用することができます。サンプル テーブルをコピーする Visdata をアクセスします。

関連情報

Microsoft Access セキュリティの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
105990情報: Visual Basic 3.0 のセキュリティ処理は Access によって設定方法

プロパティ

文書番号: 113701 - 最終更新日: 2011年6月30日 - リビジョン: 5.0
キーワード:?
kbhowto kbsqlprog kbmt KB113701 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:113701
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com