Teď jste offline a čekáte, až se znova připojí internet.

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

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.
Souhrn
Při přístupu k datům z více než jednoho zdroje dat současně vjeden dotaz, bude pravděpodobně chcete použít nejrychlejší a nejobecnějšíMetoda--připojování tabulek z různých zdrojů do jednohoDatabáze aplikace Microsoft Access. V tomto okamžiku dotazy, které dvou různýchdatabá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 jePokud chcete pomalejší postupu popsaného v tomto článku, pokud potřebujetePoužití dotazů ad hoc, které zahrnuje dvě nebo více databází. V tomto článkuVysvě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 tenkterá je právě otevřena.

1. Metoda

Microsoft Access SQL obsahuje klauzuli IN, který umožňuje připojitexterní 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ázená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 INdatabáze (prodej):
SELECT Customers.CustomerIDFROM CustomersIN "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á sadaPomocí následujícího kódu jazyka 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				

Metoda dvě

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

Získat přístup k libovolné tabulky v obou dvou databází uvnitř jeden vybratprohlášení, použijte následující syntaxi:
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				
Tento příklad spojení dvou tabulek ze dvou různých databází, jeden ODBCzdroj 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áchVlastnost připojit TableDef při připojování nebo čtvrtý parametrOpenDatabase výkazu. Je jedním ze tří formulářů v závislostidatabá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 Accessdatabáze. Úvodní středník představuje zástupnou nepotřebné databázespecifikace 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. TestTabtabulky serveru SQL Server a T1 tabulky je v aplikaci Microsoft Accessdatabá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 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				

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

Pokud je zabezpečené databáze Microsoft Access, aplikace Visual Basicmusí se provést příkazy SetDataAccessOption a SetDefaultWorkspacePř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 Accessdatabáze lze přistupovat pomocí dotaz ad hoc. Důvodem je, že jakmileStroj Microsoft Access je inicializován v relaci s určitým uživatelemkombinace 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ýtpřístup pro dotaz, nejlepším řešením je přesunout z tabulkyzabezpečené databáze do jednoho zabezpečenou databázi. Chcete-li to provést, je třeba změnitheslo k účtu admin "" dočasně během přenosuoperace. Pak můžete použít kód jazyka Visual Basic, například dataUká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

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 113701 - Poslední kontrola: 04/23/2011 18:15:00 - Revize: 5.0

  • kbhowto kbsqlprog kbmt KB113701 KbMtcs
Váš názor
id=1&t=">did=1&t="> >>ow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>"); >>