Jak získat přístup k více databázím v dotazu SQL v jazyce Visual Basic 3.0

Překlady článku Překlady článku
ID článku: 113701
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Při přístupu k datům z více než jednoho zdroje dat současně v jeden dotaz, bude pravděpodobně chcete použít nejrychlejší a nejobecnější Metoda--připojování tabulek z různých zdrojů do jednoho Databáze aplikace Microsoft Access. V tomto okamžiku dotazy, které dvou různých databáze lze zkonstruovat, jako by byly všechny tabulky, připojené nebo místní místní databáze aplikace Microsoft Access.
Připojování tabulek má vysoký výkon a výhody pro správu-- zejména v případě, že jsou opakovaně spuštění dotazů. Ale někdy je Pokud chcete pomalejší postupu popsaného v tomto článku, pokud potřebujete Použití dotazů ad hoc, které zahrnuje dvě nebo více databází. V tomto článku Vysvětluje, jak sestavit tyto pomalejší cross databázové dotazy.

Další informace

Existují dvě metody, které můžete použít k určení databáze mimo ten která je právě otevřena.

1. Metoda

Microsoft Access SQL obsahuje klauzuli IN, který umožňuje připojit externí databázi (databázi jiné než aktuální databáze). Tato metoda , ale omezují na pouze jeden externí databáze najednou.

Klauzule IN má dvě části: název databáze a řetězec připojení. Databáze název je úplnou cestu k souboru nebo adresáře obsahující soubor databáze a spojovací řetězec obsahuje typ databáze a další parametry podle potřeby.

Chcete-li externí databázi, připojit středník (;) pro připojení část a uzavřete jej pomocí jednoduchých nebo dvojitých uvozovek. Následující příklad používá k určení tabulky (zákazníci) v programu dBASE IV klauzule IN databáze (prodej):
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
V jazyku Visual Basic lze vytvořit z ve výše uvedeném příkladu dynamická sada Pomocí následujícího kódu 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
				

Metoda dvě

Stroj Microsoft Access, které jsou začleněny do jazyka Visual Basic verze 3.0 lze analýzy dotazů SQL zahrnout spojovací řetězec pro otevření databáze objekt. Přijme-li plně kvalifikovaný klauzuli From příkazu SQL název tabulky, který umožňuje umístění připojovacího řetězce v čtverec závorky před název tabulky. Spojovací řetězec je oddělen od název tabulky podle období. Tato metoda umožňuje připojení k více externích databází současně.

Získat přístup k libovolné tabulky v obou dvou databází uvnitř jeden vybrat prohlášení, použijte následující syntaxi:
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
				
Tento příklad spojení dvou tabulek ze dvou různých databází, jeden ODBC zdroj dat a další tabulku aplikace dBASE III v adresáři C:\DBASE3.

Obecně je stejné jako řetězec připojení zde použitý v hranatých závorkách Vlastnost připojit TableDef při připojování nebo čtvrtý parametr OpenDatabase výkazu. Je jedním ze tří formulářů v závislosti databáze (ODBC, ISAM nebo aplikace Microsoft Access).

U databází ODBC:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
Databáze 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]
				
Databáze aplikace Microsoft Access:
   [;database=C:\VB\BIBLIO.MDB]
				
Poznámka: úvodní středník pro databáze aplikace Microsoft Access je důležité. To je přesně stejný řetězec, které jsou potřebné k vyplnění vlastnosti připojení Objekt TableDef před připojením tabulky ve formátu aplikace Microsoft Access databáze. Úvodní středník představuje zástupnou nepotřebné databáze specifikace formátu a umožňuje "databáze =" klauzule dodržovat.

Příklad kódu více databázového dotazu

Tento příklad vytvoří dynaset se spojení dvou tabulek z dva zdroje dat, SQL Server a databáze aplikace Microsoft Access. TestTab tabulky serveru SQL Server a T1 tabulky je v aplikaci Microsoft Access databáze.

Poznámka: Je nutné změnit <username> a <strong password=""> na správné hodnoty před spuštěním tohoto kódu. Přesvědčte se, zda má příslušná oprávnění k provedení této operace k databázi uživatelské jméno. </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
				

Zvláštní Poznámka O zabezpečené databáze Microsoft Access

Pokud je zabezpečené databáze Microsoft Access, aplikace Visual Basic musí se provést příkazy SetDataAccessOption a SetDefaultWorkspace Před provedením jakékoli datové související kód. To je vyžadováno pro úspěšné přihlášení, protože aplikace Microsoft Access nepoužívá "Username =" a "PWD =" části řetězce připojení. Napří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>"
				
Když toto uděláte, bude dotazy do zabezpečené databáze Microsoft Access úspěšné. Uvědomte si však, že v důsledku tohoto procesu je integrovaný omezení pro tuto techniku ad hoc; pouze jedno zabezpečené aplikace Microsoft Access databáze lze přistupovat pomocí dotaz ad hoc. Důvodem je, že jakmile Stroj Microsoft Access je inicializován v relaci s určitým uživatelem kombinace jména a hesla tyto hodnoty jsou zachovány, dokud relaci (Spustitelný program Visual Basic nebo relaci prostředí VB.EXE) končí.

Pokud však více než dvě zabezpečené databáze Microsoft Access třeba být přístup pro dotaz, nejlepším řešením je přesunout z tabulky zabezpečené databáze do jednoho zabezpečenou databázi. Chcete-li to provést, je třeba změnit heslo k účtu admin "" dočasně během přenosu operace. Pak můžete použít kód jazyka Visual Basic, například data Ukázka aplikace Access Visdata, kopírování tabulek.

Odkazy

Další informace o zabezpečení aplikace Microsoft Access klepněte na následující číslo článku databáze Microsoft Knowledge Base:
105990INFO: Visual Basic 3.0 popisovačů zabezpečení nastavení aplikace Microsoft Access

Vlastnosti

ID článku: 113701 - Poslední aktualizace: 23. dubna 2011 - Revize: 5.0
Klíčová slova: 
kbhowto kbsqlprog kbmt KB113701 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:113701
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

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