Toegang tot meerdere Databases in een SQL-Query in VB 3.0

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 113701
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Toegang tot gegevens uit meer dan één gegevensbron tegelijkertijd in een enkele query zult u waarschijnlijk de snelste en meest algemene methode--de tabellen uit verschillende gegevensbronnen koppelen aan één Microsoft Access-database. Op dat moment de query's die twee verschillende databases kunnen worden opgebouwd alsof alle tabellen, gekoppelde of lokaal lokale Microsoft Access-database.
Tabellen koppelen heeft krachtige prestaties en administratieve voordelen-- vooral als u query herhaaldelijk uitvoert. Echter, soms u mogelijk wilt de langzamere route in dit artikel wordt beschreven wanneer u het gebruik van ad hoc query's die twee of meer databases omvatten. In dit artikel hoe deze erbij langzamer cross-database.

Meer informatie

Er zijn twee methoden voor het opgeven van een database buiten de dat is geopend.

Methode 1

Microsoft Access SQL biedt een IN-component waarmee u verbinding maakt met een externe database (database dan de huidige database). Deze methode wordt echter beperkt u slechts één externe database tegelijk.

De component bestaat uit twee delen, databasenaam en verbindingsreeks. De database de naam is een volledig pad naar het bestand of de map waarin de het databasebestand en de verbindingsreeks bevat het databasetype en andere zo nodig de parameters.

Wilt opgeven van een externe database, voegt u een puntkomma (;) om de verbinding deel en met enkele of dubbele aanhalingstekens plaatst. De volgende Voorbeeld van de component gebruikt een tabel (klanten) opgeven in een dBASE IV database (verkoop):
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
In Visual Basic kunt u een dynaset uit het bovenstaande voorbeeld door de volgende Visual Basic-code gebruiken:
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
				

Methode 2

Kan de engine van Microsoft Access opgenomen in Visual Basic versie 3.0 Parse SQL-query's op te nemen van de verbindingsreeks die is gebruikt om een database te openen object. De From-component van de SQL-instructie accepteert een volledig gekwalificeerde tabelnaam waarmee de plaatsing van de verbindingsreeks in vierkant vierkante haakjes voor de naam van de tabel. De verbindingsreeks wordt gescheiden van de de naam van de tabel door een punt. Met deze methode kunt u verbinding maken met meerdere externe databases tegelijkertijd.

U kunt elke tabel in een van de twee databases binnen één select openen instructie met deze syntaxis:
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
				
In dit voorbeeld koppelt twee tabellen uit twee verschillende databases een ODBC gegevensbron en andere dBASE III-tabel in de map C:\DBASE3.

In het algemeen is de verbindingsreeks gebruikt hier vierkante haakjes identiek aan de eigenschap Connect van het koppelen van TableDef of de vierde parameter van de instructie OpenDatabase. Kan in een van de drie formulieren afhankelijk in de database (ODBC, ISAM- of Microsoft Access).

Voor ODBC-databases:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
ISAM-databases:
   [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]
				
Voor Microsoft Access-databases:
   [;database=C:\VB\BIBLIO.MDB]
				
Opmerking de toonaangevende puntkomma voor Microsoft Access-databases is belangrijk. Dit is precies dezelfde tekenreeks als die nodig zijn voor het vullen van de eigenschap Connect van een TableDef-object voordat de tabel in een Microsoft Access-indeling koppelen de database. De toonaangevende puntkomma is een tijdelijke plaatsaanduiding voor de overbodige database specificatie opmaken en kunt u de ' database = ' component te volgen.

Voorbeeld van een databasequery meerdere

In dit voorbeeld wordt een dynaset twee tabellen uit twee gegevensbronnen koppelen een SQL-Server en de andere Microsoft Access-database. De TestTab tabel is op de SQL Server en de T1-tabel in Microsoft Access de database.

Opmerking U moet <username>en <strong password="">naar de juiste waarden voordat u deze code uitvoert. Controleer of gebruikersnaam heeft de juiste machtigingen om deze bewerking uitvoeren op de database. </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
				

Speciale opmerking over beveiligde Databases van Microsoft Access

Als de Microsoft Access-database is beveiligd, de Visual Basic-toepassing de opdrachten SetDataAccessOption en SetDefaultWorkspace moet worden uitgevoerd. voordat access een data-gerelateerde code. Dit is vereist voor een geslaagde aanmelding omdat Microsoft Access gebruikt de "Username =" en "PWD =" secties van de verbindingsreeks. Bijvoorbeeld:
   ' 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>"
				
Wanneer dit gebeurt, wordt query's naar de beveiligde database van Microsoft Access slagen. Bedenk dat dit proces, er een ingebouwde is beperking voor dit ad hoc techniek; slechts een beveiligde Microsoft Access database kan worden benaderd met een ad hoc query. Dit komt omdat zodra de Microsoft Access-engine is geïnitialiseerd in een sessie met een bepaalde gebruiker combinatie van gebruikersnaam en wachtwoord die waarden worden bewaard totdat de sessie (Visual Basic-programma of een sessie van het milieu, VB.(EXE) eindigt.

Als er meer dan moeten twee beveiligde Microsoft Access-databases echter worden de beste benadering is geopend voor een query, de daadwerkelijke tabellen verplaatsen beveiligde databases in een beveiligde database. Hiervoor moet u wijzigen het wachtwoord voor de account admin ' ' tijdelijk tijdens de overdracht bewerkingen. Vervolgens kunt u Visual Basic-code, zoals die in de gegevens toegang tot monster Visdata tabellen kopiëren.

Referenties

Voor meer informatie over beveiliging in Microsoft Access, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
105990INFO: Hoe Visual Basic 3.0 handelt de beveiliging in Microsoft Access ingesteld

Eigenschappen

Artikel ID: 113701 - Laatste beoordeling: maandag 9 juli 2012 - Wijziging: 4.0
Trefwoorden: 
kbhowto kbsqlprog kbmt KB113701 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende: 113701
Vrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.

Geef ons feedback

 

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