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

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:113701
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。
概要
同時に複数のデータ ソースからのデータにアクセスするときは、1 つのクエリ、おそらく最速かつ最も一般的な使用しますメソッドの 1 つに、さまざまなデータ ソースからテーブルを添付:Microsoft Access データベースです。この時点で、そのスパン 2 つの異なるクエリを実行します。すべてのテーブル、添付またはローカルのようにデータベースを構築します。ローカルの Microsoft Access データベースにします。
テーブルのアタッチ強力なパフォーマンス、および管理の利点を持つ:特に、クエリを繰り返し実行する場合。ただし、場合によっては遅くに、必要なときにこの資料に記載する方法について説明することができます。2 つ以上のデータベースを包含するアドホック クエリを使用します。この資料でこのような低速のクロス データベース クエリを構築する方法について説明します。
詳細
2 つの方法は、1 つの外部データベースを指定できます。開いています。

方法 1

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

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

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

方法 2

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

任意のテーブルでは、2 つのデータベース内で 1 つの選択のいずれかにアクセスできます。この構文を使用してステートメント:
SELECT tbl1.fld1,tbl2.fld1FROM [odbc;dsn=datasource;database=pubs;Username= <username>;PWD=<strong password>].tbl1,[dbase iii;database=C:\DBASE3].tbl2WHERE 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 databaseDim ds As dynasetDim 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.MoveNextWend				

セキュリティで保護された 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 によって設定方法

警告: この記事は自動翻訳されています

Proprietà

ID articolo: 113701 - Ultima revisione: 06/30/2011 07:17:00 - Revisione: 5.0

  • kbhowto kbsqlprog kbmt KB113701 KbMtja
Feedback