Access
 sql >> Datenbank >  >> RDS >> Access

Öffnen oder Verknüpfen von Text oder Excel als Datenquellen in Microsoft Access

Öffnen oder Verknüpfen von Text oder Excel als Datenquellen in Microsoft Access

Access ist ein phänomenales Tool für die Arbeit mit vielen Datenquellen. Sie wissen vielleicht schon lange, dass Sie Daten in einer Vielzahl von Formaten problemlos importieren oder exportieren können. Wir hatten jedoch ein Szenario, in dem wir Daten aus externen Datenquellen verarbeiten mussten. Die Verarbeitung wird häufig ausgeführt, sodass das Importieren von Daten die Front-End-Datei schnell aufblähen würde. Darüber hinaus war es in dieser Situation keine praktikable Option, eine zweite Kopie der Access-Datei als temporäre Datenbank zu erstellen, um das Aufblähen zu vermeiden. Welche Möglichkeiten hatten wir? Hier haben wir einen Mangel an Informationen zum Öffnen oder Verlinken von nicht relationalen Datenquellen festgestellt. Tauchen wir also tief in dieses Thema ein.

Diese Blogserie zielt darauf ab, eine klaffende Lücke in der Dokumentation von Microsoft zum Öffnen oder Verknüpfen von Text oder Excel als Datenquelle in Access-Anwendungen zu schließen. Connectionstrings.com und andere Websites bieten einige Breadcrumbs. Sie können normalerweise auch einen Teil des Verhaltens entdecken, indem Sie die Assistenten von Access verwenden und die Objekte anschließend untersuchen. Allerdings ist das Sekundärraten nicht sehr nützlich. Daher wird in dieser Artikelserie erläutert, wie Sie Excel- und Textdateien als Datenquellen verwenden können, ohne die Daten unbedingt importieren oder exportieren zu müssen.

Bitte beachten Sie, dass die Serie ohne die Hilfe von Dan Haught und Jim Ferguson, den Co-Autoren von Microsoft Jet Database Engine Programmer’s Guide, nicht möglich wäre. Auch wenn das Buch schon lange vergriffen ist, ist es immer noch ein wertvolles Buch, wenn man viel mit DAO arbeitet.

Zugriff auf und nicht relationale Datenquellen

Access hat immer die Verwendung der Indexed Sequential Access Method (ISAM) als potenzielle Datenquelle unterstützt, die es ermöglicht, nicht relationale Datenquellen wie Textdateien oder Excel-Tabellen und sogar andere Dateiformate wie Exchange, dBASE zu importieren, zu verknüpfen oder zu exportieren oder FoxPro. DAO macht es möglich, weil es die ISAM-Treiber hat, die mit diesen Formaten arbeiten können. Ich werde mich jedoch auf Textdateien und Excel-Tabellen konzentrieren, da dies häufigere Quellen sind, für die wir Access benötigen, um damit zu arbeiten. Wenn Sie bisher nur Daten über die Registerkarte „Externe Daten“ über Access importiert haben, mag es magisch erscheinen, aber in Wirklichkeit stehen uns als Programmierern auf DAO-Ebene alle Funktionen von Access zur Verfügung.

Vergessen wir also, dass es Zauberer gibt. Vergessen wir die glänzenden Symbole auf dem Band. Vergessen wir, dass es verknüpfte Tabellen gibt. Lassen Sie uns einfach VBA-Code verwenden, um mit Datenquellen aus dem Nichts zu arbeiten. Können wir? Absolut. Zunächst sehen wir uns den Unterschied zwischen dem Verknüpfen und Öffnen einer Datenquelle an.

Linken vs. Öffnen

Um bei der Terminologie zu helfen, müssen wir zwischen Verlinken unterscheiden vs. Öffnen . Verknüpfen bedeutet, dass wir eine verknüpfte Tabelle erstellen, die jetzt eine Access-„Tabelle“ ist, die wir wie jede andere Access-Tabelle verwenden können. Als solches ist es ein permanentes Objekt, das in der Access-Anwendung definiert ist. Beim Öffnen hingegen greifen wir direkt auf die Datenquelle zu, indem wir OpenDatabase von DAO verwenden Methode. Das Öffnen einer Datenquelle erfolgt naturgemäß normalerweise über VBA-Code, wie Sie gleich sehen werden.

Beispiele und Code einrichten

Da es in der Serie darum geht, die wesentlichen Details zu verstehen, wie Access mit diesen Datenquellen interagiert, konzentrieren wir uns hier zunächst auf das Öffnen statt auf das Verlinken. Wie öffnen wir also eine Excel-Tabelle? Sicherlich ist es keine Datenbank? Lassen Sie uns zunächst ein Minimalbeispiel erstellen. In einem Ordner C:\Links erstellen wir eine Excel-Tabelle und eine Access-Datenbankdatei namens Products.xlsx und Sample.accdb , beziehungsweise:

Die Products.xlsx ist eine einfache Tabelle mit nur einem Blatt mit diesem Inhalt:

Lassen Sie uns damit VBA-Code in Sample.accdb hinzufügen . In einem Standardmodul:

Public Sub OpenExcel()
    Dim db As DAO.Database
    
    Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx")
    
    Dim tdf As DAO.TableDef
    For Each tdf In db.TableDefs
        Debug.Print tdf.Name
        
        Dim fld As DAO.Field
        For Each fld In tdf.Fields
            Debug.Print fld.Name,
        Next
        Debug.Print
        
        Dim rs As DAO.Recordset
        Set rs = tdf.OpenRecordset
        Do Until rs.EOF
            For Each fld In rs.Fields
                Debug.Print fld.Value,
            Next
            Debug.Print
            rs.MoveNext
        Loop
    Next
End Sub

Wenn wir den Code ausführen, sollten wir die folgende Ausgabe in unserem unmittelbaren Fenster erhalten:

Products      Count         
Apples         3            
Bananas        5            
Figs           8            

Obwohl Excel keine „Datenbank“ ist (und wenn Sie Excel als Datenbank verwenden, schämen Sie sich 😉 ), können wir immer noch so tun, als wäre es eine „Datenbank“ und durch ihre „Tabellen“ und „Aufzeichnungen“ iterieren. unter Verwendung bekannter DAO-Objekte. Die ganze Magie kommt von dieser Verbindungszeichenfolge:

Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx

Aber es muss nicht magisch sein. Die Serie wird die Teile der Verbindungszeichenfolgen für Excel- und Textdateitreiber analysieren. Beginnen wir also mit dem Vergleich mit der ODBC-Verbindungszeichenfolge, mit der Sie vielleicht besser vertraut sind.

Datenquellentypen

Wenn Sie ODBC-Datenquellen verlinkt haben, ist Ihnen wahrscheinlich aufgefallen, dass ODBC-Verbindungszeichenfolgen normalerweise etwa so aussehen:

ODBC;DRIVER=...;SERVER=...;DATABASE=...;

Fragte sich, warum es immer mit ODBC begann ? Dieser erste Teil wird von DAO verwendet, um die Art der Quelle zu identifizieren. Da Excel jedoch keine ODBC-Datenbank ist, müssen wir Excel 12.0 Xml verwenden um anzuzeigen, dass DAO einen bestimmten Excel-Treiber verwenden muss. Der Rest der Syntax der Verbindungszeichenfolge wird dann davon beeinflusst, welchen Treiber wir im ersten Teil der Verbindungszeichenfolge verwenden.

Hier ist eine unvollständige Liste möglicher Datenquellentypen, die MS Access erkennt:

  1. Excel 8.0 :97-2003 xls-Dateien
  2. Excel 12.0 :xlsb-Dateien
  3. Excel 12.0 Xml :xlsx-Dateien
  4. Text :Beliebige Textdateien

Es gibt weitere Datenquellen, einschließlich SharePoint, Exchange oder FoxPro, aber ich werde diese nicht behandeln. Trotzdem zeigt es, dass Access in der Lage ist, mit diesen Quellen wie mit einer Datenbank zu arbeiten, und dass wir DAO verwenden können, um den Inhalt zu lesen. Beachten Sie, dass bei Verwendung nicht relationaler Datenquellen möglicherweise nicht alle Vorgänge vollständig unterstützt werden. Beispielsweise dürfen Sie eine vorhandene Zeile möglicherweise nicht bearbeiten, obwohl Sie eine Zeile einfügen können.

Eine Herausforderung beim Öffnen oder Verknüpfen einer Datenquelle bedeutet jedoch, dass Sie die Daten nicht einfach importieren und das Schema anschließend an Ihre Bedürfnisse anpassen können. Daher stellen Sie möglicherweise fest, dass das Standardschema, das Sie beim Verknüpfen erhalten, nicht Ihren Wünschen entspricht. Aus diesem Grund ist ein tiefgreifendes Verständnis der Verbindungszeichenfolge wichtig. Daher erfahren Sie in den nächsten Artikeln mehr über die Details der Verbindungszeichenfolgen für Excel- und Textdateien.

Schlussfolgerungen

Sie haben gesehen, dass wir als Alternative zum Importieren der externen Daten wählen können, eine externe Datenquelle mit DAO zu verknüpfen oder sogar zu öffnen. Die Möglichkeit, eine externe Datenquelle zu verknüpfen oder zu öffnen, wird weitestgehend zu wenig genutzt. Die Möglichkeit zum Verknüpfen oder Öffnen sollte jedoch nicht außer Acht gelassen werden, da dies neue Szenarien eröffnen kann, z. B. das Vermeiden des Aufblähens als Folge des Imports, insbesondere in einer gesperrten Umgebung. Im nächsten Artikel werde ich die verschiedenen Parameter erläutern, die vom Excel-Treiber zum Erstellen einer gültigen Verbindungszeichenfolge verwendet werden. In den folgenden Artikeln gehe ich auf den Textdateitreiber und die Verbindungsparameter ein. Im letzten Artikel fassen wir alles zusammen.