Je bent nu offline; er wordt gewacht tot er weer een internetverbinding is

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

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.
Samenvatting
Toegang tot gegevens uit meer dan één gegevensbron tegelijkertijd in eenenkele query zult u waarschijnlijk de snelste en meest algemenemethode--de tabellen uit verschillende gegevensbronnen koppelen aan éénMicrosoft Access-database. Op dat moment de query's die twee verschillendedatabases kunnen worden opgebouwd alsof alle tabellen, gekoppelde of lokaallokale Microsoft Access-database.
Tabellen koppelen heeft krachtige prestaties en administratieve voordelen--vooral als u query herhaaldelijk uitvoert. Echter, soms umogelijk wilt de langzamere route in dit artikel wordt beschreven wanneer uhet gebruik van ad hoc query's die twee of meer databases omvatten. In dit artikelhoe deze erbij langzamer cross-database.
Meer informatie
Er zijn twee methoden voor het opgeven van een database buiten dedat is geopend.

Methode 1

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

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

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

Methode 2

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

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

In het algemeen is de verbindingsreeks gebruikt hier vierkante haakjes identiek aande eigenschap Connect van het koppelen van TableDef of de vierde parametervan de instructie OpenDatabase. Kan in een van de drie formulieren afhankelijkin 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 eenTableDef-object voordat de tabel in een Microsoft Access-indeling koppelende database. De toonaangevende puntkomma is een tijdelijke plaatsaanduiding voor de overbodige databasespecificatie 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 koppeleneen SQL-Server en de andere Microsoft Access-database. De TestTabtabel is op de SQL Server en de T1-tabel in Microsoft Accessde 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 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				

Speciale opmerking over beveiligde Databases van Microsoft Access

Als de Microsoft Access-database is beveiligd, de Visual Basic-toepassingde opdrachten SetDataAccessOption en SetDefaultWorkspace moet worden uitgevoerd.voordat access een data-gerelateerde code. Dit is vereist voor eengeslaagde 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 Accessslagen. Bedenk dat dit proces, er een ingebouwde isbeperking voor dit ad hoc techniek; slechts een beveiligde Microsoft Accessdatabase kan worden benaderd met een ad hoc query. Dit komt omdat zodra deMicrosoft Access-engine is geïnitialiseerd in een sessie met een bepaalde gebruikercombinatie 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 wordende beste benadering is geopend voor een query, de daadwerkelijke tabellen verplaatsenbeveiligde databases in een beveiligde database. Hiervoor moet u wijzigenhet wachtwoord voor de account admin ' ' tijdelijk tijdens de overdrachtbewerkingen. Vervolgens kunt u Visual Basic-code, zoals die in de gegevenstoegang 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

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 113701 - Laatst bijgewerkt: 07/09/2012 11:51:00 - Revisie: 4.0

  • kbhowto kbsqlprog kbmt KB113701 KbMtnl
Feedback
/html>