DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 113701 - Geändert am: Dienstag, 3. September 2013 - Version: 4.0

 

Auf dieser Seite

Zusammenfassung

Beim Zugriff auf Daten aus mehr als einer Datenquelle gleichzeitig in einer einzigen Abfrage möchten Sie wahrscheinlich am schnellsten und die meisten Generalmethod--Anfügen von Tabellen aus verschiedenen Datenquellen zu SingleMicrosoft Access-Datenbank verwenden. An diesem Punkt fragt diese Spanne, die zwei Differentdatabases erstellt werden können, als ob alle Tabellen verbunden oder lokale Werelocal zur Microsoft Access-Datenbank.
Anfügen von Tabellen hat leistungsfähige und administrativen Vorteile – insbesondere dann, wenn Sie Abfragen wiederholt ausgeführt werden. In einigen Fällen Ihr wisst zu wirtschaften jedoch die langsamere Route bei ad-hoc-Abfragen, die zwei oder mehr Datenbanken umfassen verwenden, müssen Sie in diesem Artikel beschrieben. Diese Articleexplains wie diese langsameren datenbankübergreifenden Abfragen erstellt.

Weitere Informationen

Es gibt zwei Methoden, mit denen Sie angeben, dass eine Datenbank außerhalb diejenige derzeit geöffnet ist.

Methode 1:

Microsoft Access SQL stellt eine IN-Klausel, die Sie zum Anexternal Datenbank (einer anderen als der aktuellen Datenbank) herstellen kann. Diese Methoddoes jedoch Beschränkung auf nur eine externe Datenbank zu einem Zeitpunkt.

Die IN-Klausel besteht aus zwei Teilen, Datenbanknamen und die Verbindungszeichenfolge. Databasename ist ein vollqualifizierter Pfad zur Datei oder zum Verzeichnis, das Datenbankmodul-Datei enthält, und die Verbindungszeichenfolge enthält den Datenbanktyp und Otherparameters je nach Bedarf.

Um eine externe Datenbank anzugeben, fügen Sie ein Semikolon (;) an den Connectpart, und setzen Sie ihn in einfache oder doppelte Anführungszeichen. Die Followingexample wird mit der IN-Klausel eine Tabelle (Kunden) in einer dBASE-IVdatabase (Verkauf) angegeben:
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
In Visual Basic können Sie ein Dynaset aus der obigen Beispiel mithilfe der folgende Visual Basic-Code erstellen:
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 zwei

Das Microsoft Access-Datenbankmodul integriert Visual Basic Version 3.0 Canparse SQL-Abfragen auf die Verbindungszeichenfolge verwendet, um eine Databaseobject zu öffnen. Die From-Klausel der SQL-Anweisung akzeptiert ein vollständig Qualifiedtable Name, der die Platzierung die Verbindungszeichenfolge in der marcoperdigones vor dem Tabellennamen ermöglicht. Die Verbindungszeichenfolge wird vom Thetable-Namen durch einen Punkt getrennt. Diese Methode können Sie gleichzeitig eine Verbindung zu Datenbanken Multipleexternal.

Sie können jede Tabelle in einem der beiden Datenbanken innerhalb einer einzelnen SELECT-Anweisung mit der folgenden Syntax zugreifen:
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 diesem Beispiel verknüpft zwei Tabellen aus verschiedenen Datenbanken eine einer ODBCDatenquellen Quelle und die andere eine dBASE III-Tabelle in das Verzeichnis C:\DBASE3.

Im Allgemeinen ist die Verbindungszeichenfolge verwendet, hier in eckigen Klammern der Connect-Eigenschaft eine TableDef beim Anfügen oder der vierten Parameterof der OpenDatabase-Anweisung identisch. Es wird in einem der drei Formen abhängigkeitder der Datenbank (ODBC, ISAM oder Microsoft Access) sein.

Für ODBC-Datenbanken:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
ISAM-Datenbanken:
   [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]
				
Für Microsoft Access-Datenbanken:
   [;database=C:\VB\BIBLIO.MDB]
				
Beachten Sie das vorangestellte Semikolon für Microsoft Access-Datenbanken ist wichtig.Dies ist genau die gleiche Zeichenfolge musste die Connect-Eigenschaft des aTableDef Objekts ausfüllen, bevor Sie eine Microsoft Access-Formatdatabase in der Tabelle zuordnen. Das vorangestellte Semikolon ist ein Platzhalter für die Spezifikation nicht benötigte Databaseformat und ermöglicht die "Database ="-Klausel folgen.

Codebeispiel für eine mehrere Datenbankabfrage

In diesem Beispiel wird ein Dynaset Verknüpfen der beiden Tabellen aus zwei Datenquellen, die eine SQL Server und Microsoft Access-Datenbank erstellt. Die TestTabtable ist auf dem SQL Server und die T1-Tabelle ist in der Microsoft-Accessdatabase.

Hinweis Sie müssen die <username>ändern und <strong password="">auf die richtigen Werte, bevor Sie diesen Code ausführen. Stellen Sie sicher, dass Benutzername die erforderlichen Berechtigungen für diesen Vorgang in der Datenbank verfügt.</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
				

Besonderer Hinweis zu gesicherten Microsoft Access-Datenbanken

Wenn die Microsoft Access-Datenbank gesichert ist, führen Sie die Visual Basic-Applicationmust der SetDataAccessOption und SetDefaultWorkspace Commandsbefore Ausführen aller Daten verwandte Zugangscode. Dies ist für erfolgreiches Anmeldung erforderlich, da Microsoft Access nicht verwendet die "Username =" und "PWD =" Abschnitte die Verbindungszeichenfolge. Zum Beispiel:
   ' 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>"
				
Wenn dies geschieht, Abfragen an die gesicherten Microsoft Access-Datenbank Willsucceed. Beachten Sie jedoch, dass aufgrund dieser Prozess es eine integrierte Inlimitation für dieses ad-hoc-Verfahren gibt; mit einer ad-hoc-Abfrage kann nur eine gesicherte Microsoft Accessdatabase zugegriffen werden. Dies ist, da diese Werte bis zur Sitzung (Visual Basic-Programm oder Sitzungen in der Umgebung, VB. beibehalten werden, nachdem Microsoft Access-Datenbankmodul in einer Sitzung mit einem bestimmten Benutzernamen und Kennwort-Kombination initialisiert wird(EXE) endet.

Wenn Beaccessed für eine Abfrage mehr als zwei gesicherte Microsoft Access-Datenbanken erforderlich ist, ist der beste Ansatz jedoch die eigentlichen Tabellen Fromsecured Datenbanken in einer gesicherten Datenbank verschieben. Zu diesem Zweck müssen Sie verändern-Kennwort für das Admin-Konto auf "" während der Transferoperations vorübergehend. Visual Basic-Code, z. B. in der Dataaccess-Beispiel Visdata, können Sie dann die Tabellen kopieren.

Informationsquellen

Weitere Informationen zur Sicherheit in Microsoft Access klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
105990  (http://support.microsoft.com/kb/105990/ ) INFO: Wie Visual Basic 3.0 für die Sicherheit von Microsoft Access eingestellt
Keywords: 
kbhowto kbsqlprog kbmt KB113701 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 113701  (http://support.microsoft.com/kb/113701/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Zurückgezogener KB-ArtikelDisclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store
Folgen Sie uns: