Ako pristupovať k viacero databáz v dotaze SQL vo VB 3.0

Preklady článku Preklady článku
ID článku: 113701
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Pri prístupe k údaje z viac ako jedného zdroja údajov súčasne v jediného dotazu, bude pravdepodobne chcete používať najrýchlejších a najčastejšie všeobecné metóda--prikladaná tabuliek z rozličných zdrojov údajov do jedinej Databáza programu Microsoft Access. V tomto bode dotazy, ktoré zahŕňajú dve rôzne databáz môže byť konštruované ako keby boli všetky tabuľky, pripojenej, alebo miestne, miestne do databázy programu Microsoft Access.
Pripojením tabuľky má silný výkon a administratívne výhody-- najmä ak sú vykonávajúci dotazy opakovane. Avšak, niekedy vám chcieť vziať trase pomalšie, popísaný v tomto článku, keď potrebujete Ak chcete použiť ad hoc dotazy, ktoré zahŕňajú dve alebo viacero databáz. Tento článok vysvetľuje spôsob vytvorenia týchto pomalší kríž-databázových dotazoch.

DALSIE INFORMACIE

Existujú dva spôsoby, ktoré môžete zadať databázu mimo jeden to je práve otvorené.

Metóda One

Microsoft Access SQL poskytuje v klauzule, ktorá umožňuje pripojenie k externej databázy (databázy iné ako Aktuálna databáza). Táto metóda však vás obmedzujú na iba k jednej externej databáze naraz.

V klauzule má dva diely, názov databázy a pripojte reťazec. Databáza názov je plne kvalifikovaní cestu k súbor alebo adresár, ktorý obsahuje súbor databázy a pripojiť reťazec obsahuje typ databázy a iné parametre podľa potreby.

Špecifikovať externej databázy, pripojte bodkočiarku (;) na pripojenie časť, uzavrite ho do jednoduchých alebo dvojitých úvodzoviek. Nasledujúce príklad používa v klauzule určiť tabuľku (zákazníci) v programe dBASE IV Databáza (predaj):
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
V jazyku Visual Basic, môžete vytvoriť množiny z vyššie uvedený príklad prostredníctvom pomocou nasledujúci kód jazyka 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
				

Dve metódy

Nástroj programu Microsoft Access začlenené do jazyka Visual Basic verzia 3.0 možno analyzovať SQL dotazov zahrnúť pripojiť reťazec slúžiaci na otvorenie databázy objekt. V klauzule From príkazu SQL akceptuje plne kvalifikovaní názov tabuľky, ktorý umožňuje umiestnenie reťazca pripojiť na námestí zátvorkách pred názov tabuľky. Pripojiť reťazec je oddelená od názov tabuľky bodkou. Táto metóda umožňuje pripojiť na násobok externých databáz v rovnakom čase.

Máte prístup ľubovoľnej tabuľky v jednej z dvoch databáz vo vnútri jednotného vyberte vyhlásenie pomocou nasledovnej syntaxe:
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
				
V tomto príklade sa pripojí dvoch tabuliek z dvoch odlišných databázach, jeden ODBC Zdroj údajov a iné dBASE III tabuľky v adresári C:\DBASE3.

Vo všeobecnosti, pripojenie reťazec tu použité v hranatých zátvorkách je identické s Vlastnosť pripojiť TableDef keď pripojením alebo štvrtého parametra OpenDatabase výkazu. To bude v jednej z troch foriem, v závislosti od v databáze (ODBC, Knižnica ISAM alebo Microsoft Access).

Pre databázy ODBC:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
Knižnica ISAM databáz:
   [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]
				
Pre databázy programu Microsoft Access:
   [;database=C:\VB\BIBLIO.MDB]
				
Poznámka: dôležité je popredným bodkočiarka pre databázy programu Microsoft Access. To je presne rovnaký reťazec potrební na vyplnenie vlastnosť pripojiť TableDef objekt pred pripojením tabuľky na formát programu Microsoft Access databáza. Vedúci bodkočiarka je majiteľom miesto pre nepotrebné databázy formátovať špecifikácie a umožňuje "databázy =" klauzula sledovať.

Kód príkladom viacerých databázový dotaz

Tento príklad vytvára množiny spájanie dvoch tabuliek z dve údaje zdrojov, jeden SQL Server a iné databázy programu Microsoft Access. TestTab tabuľka je na serveri SQL Server a tabuľke T1 je v programe Microsoft Access databáza.

Poznámka: Musíte zmeniť <username>a <strong password="">na správne hodnoty pred spustením tohto kódexu. Uistite sa, že užívateľské meno má príslušné povolenia na vykonanie tejto operácie v databáze. </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
				

Osobitná poznámka týkajúca sa zabezpečené databázy programu Microsoft Access

Ak je zabezpečená databáza programu Microsoft Access, aplikácia Visual Basic musí vykonať príkazy SetDataAccessOption a SetDefaultWorkspace pred vykonaním akýchkoľvek údajov prístup súvisiacich kód. To vyžaduje úspešné prihlásenie, pretože Microsoft Access nepoužíva "Username =" a "PWD =" oddiely reťazca pripojiť. Napríklad:
   ' 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>"
				
Keď sa to deje, dotazy na zabezpečené databázy programu Microsoft Access budú uspieť. Všimnite si však, že z dôvodu tohto procesu je vstavaný obmedzenie pre túto ad hoc techniku; iba jeden zabezpečené programu Microsoft Access databázy sú prístupné pomocou ad hoc dotazu. To je, pretože akonáhle Nástroj programu Microsoft Access je inicializovaný v relácii s konkrétneho používateľa meno a heslo kombinácii, tieto hodnoty sa zachovajú až do zasadnutia (Spustiteľný program Visual Basic alebo relácie životného prostredia, VB.EXE) končí.

Avšak, ak viac ako dvoch zabezpečených databázy programu Microsoft Access musia byť prístupné pre dotaz, najlepší prístup je presunúť skutočné tabuliek z zabezpečené databázy do jednej zabezpečených databázy. Chcete urobiť, musíte zmeniť heslo pre konto admin "" dočasne počas prenosu operácie. Potom môžete použiť kód pre Visual Basic, ako napríklad v údaje prístup vzorka Visdata skopírovať tabuliek.

ODKAZY

Ďalšie informácie o zabezpečení Microsoft Access po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
105990INFO: Ako jazyka Visual Basic 3.0 popisovače zabezpečenia stanovených programu Microsoft Access

Vlastnosti

ID článku: 113701 - Posledná kontrola: 10. októbra 2011 - Revízia: 2.0
Kľúčové slová: 
kbhowto kbsqlprog kbmt KB113701 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:113701
Upozornenie na neaktuálny obsah článku databázy KB
Tento článok obsahuje informácie o produktoch, pre ktoré spoločnosť Microsoft už neposkytuje technickú podporu. Z tohto dôvodu je tento článok publikovaný ako nezmenený a už nebude aktualizovaný.

Odošlite odozvu

 

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