Gewusst wie: Zugriff von mehreren Datenbanken in einer SQL-Abfrage in VB 3.0

Artikel-ID: 113701 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Beim Zugriff auf Daten aus mehr als eine Datenquelle gleichzeitig in einer einzigen Abfrage werden Sie wahrscheinlich die schnellste und die meisten allgemeine Methode--Anfügen von Tabellen aus verschiedenen Datenquellen an eine einzelne Microsoft Access-Datenbank verwenden möchten. Abfragen, die zwei unterschiedliche Datenbanken erstrecken können zu diesem Zeitpunkt erstellt werden, als wären alle Tabellen, angefügte bzw. lokale lokal auf der Microsoft Access-Datenbank.
Anfügen von Tabellen hat leistungsfähige Leistung und administrativen Vorteile--, insbesondere, wenn Sie Abfragen wiederholt ausgeführt werden. Jedoch sollten manchmal Sie die langsamere, wenn Sie ad-hoc-Abfragen verwenden, die zwei oder mehr Datenbanken umfassen müssen in diesem Artikel beschriebenen Route in Anspruch nehmen. Dieser Artikel erläutert diese langsameren datenbankübergreifenden Abfragen erstellen.

Weitere Informationen

Es gibt zwei Methoden, die Sie verwenden können, um eine Datenbank außerhalb der anzugeben, die derzeit geöffnet ist.

Methode 1

Microsoft Access SQL stellt eine IN-Klausel, in dem Sie die Verbindung zu einer externen Datenbank (eine andere Datenbank als der aktuellen Datenbank) herstellen kann. Diese Methode wird jedoch Sie auf nur eine externe Datenbank zu einem Zeitpunkt begrenzen.

Die IN-Klausel besteht aus zwei Teilen, die Datenbank Name und die Verbindungszeichenfolge. Der Name der Datenbank ist ein vollständig qualifizierter Pfad für die Datei oder das Verzeichnis mit der Datenbankdatei, und die Verbindungszeichenfolge enthält, den Datenbanktyp und andere Parameter nach Bedarf.

Um eine externe Datenbank anzugeben, fügen Sie ein Semikolon (;), die Verbindung Teil, und schließen Sie ihn in einfache oder doppelte Anführungszeichen. Im folgenden Beispiel wird IN-Klausel geben eine Tabelle (Customers) in eine dBASE IV-Datenbank (SALES) verwendet:
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
In Visual Basic Sie können ein Dynaset aus erstellen im obigen Beispiel mit dem folgenden VBA-Code:
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

Das in Visual Basic Version 3.0 integriert Microsoft Access-Datenbankmodul kann SQL-Abfragen die Connect-Zeichenfolge verwendet, um ein Datenbankobjekt öffnen analysieren. Die von-Klausel der SQL-Anweisung akzeptiert einen vollqualifizierten Tabellennamen ermöglicht die Platzierung für die Verbindungszeichenfolge in Square brackets, bevor der Name der Tabelle. Die Verbindungszeichenfolge wird von der Tabellenname durch einen Punkt getrennt. Dieser Methode können Sie mit mehrere externe Datenbanken zur gleichen Zeit zu verbinden.

Sie können jede Tabelle in einem der zwei Datenbanken innerhalb einer einzelnen select-Anweisung zugreifen, indem mithilfe dieser Syntax:
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
				
dieses Beispiel verknüpft zwei Tabellen aus verschiedenen Datenbanken, eine ODBC-Datenquelle und der andere eine dBASE III Tabelle, in das Verzeichnis C:\DBASE3.

Im Allgemeinen ist die Verbindungszeichenfolge in eckigen Klammern hier verwendeten identisch mit der Connect-Eigenschaft des TableDef-Objekts beim Anfügen oder der vierte Parameter der OpenDatabase-Anweisung. Es wird in einem der drei Formulare je nach der Datenbank (ODBC, ISAM oder Microsoft Access) sein.

Für ODBC-Datenbanken:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
für 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]
				
Hinweis das vorangestellte Semikolon für Microsoft Access-Datenbanken ist wichtig. Dies ist genau die Zeichenfolge zum die Connect-Eigenschaft des TableDef-Objekts vor dem Anfügen der Tabelle in einer Microsoft Access-Format-Datenbank Auffüllen erforderlich sind. Das vorangestellte Semikolon ist ein Platzhalter für die Formatangabe nicht mehr benötigte Datenbank und ermöglicht die "Datenbank ="-Klausel folgen.

Codebeispiel von mehreren Abfrage

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

Hinweis: <username>Sie müssen <benutzername> ändern und < sicheres kennwort > auf die richtigen Werte vor dem Ausführen dieses Codes. Stellen Sie sicher, dass Benutzername die entsprechenden Berechtigungen für diesen Vorgang.
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
				

Spezielle Anmerkung zur Microsoft Access-Datenbanken gesichert

Wenn die Microsoft Access-Datenbank gesichert ist, Visual Basic-Anwendung muss die SetDataAccessOption ausgeführt, und SetDefaultWorkspace Befehle vor dem Ausführen alle Daten auf verknüpften Code zugreifen. Dies ist für eine erfolgreiche Anmeldung erforderlich, da Microsoft Access nicht verwendet die "UserName ="und"PWD =" Abschnitte der 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>"
				
Abfragen, um die gesicherte Microsoft Access-Datenbank ist erfolgreich, wenn dies geschieht. Beachten Sie jedoch, dass wegen dieses Vorgangs gibt es eine integrierte Einschränkung für diese ad-hoc-Technik; nur eine Microsoft Access-Datenbank gesicherte mit einer ad-hoc-Abfrage zugegriffen werden kann. Dies ist da nachdem Microsoft Access-Datenbankmodul in einer Sitzung mit einer bestimmten Benutzer Namen und Kennwort Kombination initialisiert wird bis zur Sitzung (Visual Basic ausführbares Programm oder Sitzung von der Umgebung, VB.EXE) diese Werte beibehalten werden beendet.

Wenn mehr als zwei gesicherte Microsoft Access-Datenbanken für eine Abfrage zugegriffen werden müssen, ist der beste Ansatz jedoch die eigentlichen Tabellen von gesicherten Datenbanken in einer gesicherten Datenbank verschieben. Hierzu müssen Sie das Kennwort für das Konto Admin ändern "" vorübergehend während Operationen des übertragen. Visual Basic-Code wie die in Daten Zugriff Beispiel Visdata, können Sie dann um die Tabellen zu kopieren.

Informationsquellen

Weitere Informationen über die Microsoft Access-Sicherheit finden Sie die folgende KB-Artikelnummer:
105990INFO: Wie Visual Basic 3.0 Handles Sicherheit von Microsoft Access festlegen

Eigenschaften

Artikel-ID: 113701 - Geändert am: Freitag, 1. September 2006 - Version: 3.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic 3.0 Professional Edition
Keywords: 
kbmt kbhowto kbsqlprog KB113701 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 113701
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.
Disclaimer 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.

Ihr Feedback an uns