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

Parameter der Verbindungszeichenfolge für gespeicherte Spezifikationen

Verbindungszeichenfolgenparameter für gespeicherte Spezifikationen

Access bietet eine zweite Methode zum Beschreiben des Schemas von Textdateien mithilfe der Systemtabellen MSysIMEXSpecs und MSysIMEXColumns um die Spezifikationen zu speichern. Im vorherigen Artikel habe ich behandelt, wie schema.ini kann verwendet werden, um die Struktur einer Textdatei zu beschreiben. Die schema.ini beteiligt eine externe Textdatei, auf die implizit verwiesen wird, aber mit den Systemtabellen haben wir keine externen Abhängigkeiten. Die Struktur ist ziemlich unterschiedlich, obwohl es einige Überschneidungen gibt.

MSysIMEXSpecs und MSysIMEXColumns Systemtabelle

Anstatt sich darauf zu verlassen, dass sich eine externe schema.ini im selben Ordner wie die Textdatei befindet, können Sie Spezifikationen für eine Textdatei in einem beliebigen Pfad bereitstellen, indem Sie auf die gespeicherte Spezifikation in der Access-Datenbank verweisen. Wenn Sie den Import- oder Export-Assistenten verwenden, können Sie die Spezifikationen über Advanced speichern oder laden Schaltfläche.

Durch Klicken auf die Schaltfläche „Erweitert“ wird dann der Spezifikationsdialog angezeigt. Neben dem Laden oder Speichern der Spezifikationen können Sie die Spezifikationen auch über den angezeigten Dialog anpassen.

Immer wenn eine Spezifikation gespeichert wird, wird sie in beide MSysIMEXSpecs geschrieben und MSysIMEXColumns Systemtabellen. Die Tabellen sind in neuen Access-Dateien nicht vorhanden und werden nur beim ersten Mal erstellt. Darüber hinaus können Sie Daten aus diesen Tabellen bearbeiten oder sogar löschen. Trotzdem sind sie immer noch Systemtabellen, sodass sie standardmäßig ausgeblendet sind. Wenn Sie sie im Navigationsbereich sehen möchten, müssen Sie zu den Navigationsoptionen gehen und die Sichtbarkeit sowohl für ausgeblendete als auch für Systemobjekte aktivieren.

Wenn Sie die verfügbaren Optionen im Dialog mit den Optionen vergleichen, die Sie in der schema.ini haben , können Sie einige bemerkenswerte Unterschiede erkennen. Zum Beispiel die schema.ini ermöglicht mehr Auswahlmöglichkeiten hinsichtlich der Formatierung von Datumsangaben oder Währungsbeträgen. Mit den gespeicherten Spezifikationen können wir nur die Datumsformatierung aus einer voreingestellten Liste möglicher Formate steuern. Es gibt keine direkten Optionen für Währungsbeträge, da wir den Datentyp verwenden, um anzugeben, dass eine Spalte unabhängig von der Formatierung als Währung importiert werden soll. Daher sind die Optionen der Systemtabellen im Vergleich zur schema.ini einfach. Als Nächstes sehen wir uns die Struktur der Tabellen an.

MSysIMEXSpecs Struktur

Die Tabelle stellt einen Satz gespeicherter Spezifikationen dar. Die Tabelle beschreibt für jede Zeile das Gesamtformat der Datei, ähnlich dem 2. Abschnitt der schema.ini . Es gibt jedoch verschiedene Optionen, die berücksichtigt werden müssen.

  • DateDelim :Identifiziert das Trennzeichen für die Datumsangaben. Normalerweise ist es / oder - . Es kann nur ein oder kein Zeichen sein.
  • DateFourDigitYear :Ein Ja/Nein-Feld, das angibt, ob die Datumsangaben für Jahre vierstellig formatiert sind. Wenn auf Ja gesetzt, Werte wie 10/10/20 nicht als gültige Daten angesehen werden.
  • DateLeadingZeros :Ein weiteres Ja/Nein-Feld, das angibt, ob das Datum führende Nullen hat.
  • DateOrder :Bestimmt die Datumsformatierung, die wir verwenden möchten. Die folgenden Codes sind gültig:
    • 0 :DMY
    • 1 :DYM
    • 2 :MDY
    • 3 :MYD
    • 4 :YDM
    • 5 :YMD
  • DecimalPoint :Gibt das Zeichen zum Trennen des ganzzahligen und des gebrochenen Teils einer Dezimalzahl an. Es darf nur genau ein Zeichen sein.
  • FieldSeparator :Trennt Felder in der Textdatei. Bei einer CSV-Datei wäre dies , (ein Kommazeichen). Außerdem darf es nur genau ein Zeichen sein.
  • FileType :Ähnlich wie schema.ini 's CharacterSet . Wie im vorherigen Artikel erwähnt, finden Sie alle möglichen Codepages, die auf Ihrem Windows-Computer unterstützt werden, im Registrierungsschlüssel Computer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\ . Es identifiziert die Kodierung der Textdatei. Sie können dieselbe Codepage-ID verwenden. Es gibt jedoch ein Problem. Der FileType ist als Integer definiert . Daher würde eine Codepage 65000 (z. B. Unicode) als -536 gemeldet werden. Um eine Codepage-ID größer als 32767 zu konvertieren, können Sie die Formel CInt("&H" & Hex(x)) verwenden und um die Operation umzukehren, CLng("&H" & Hex(x)) . Beispielsweise würde die Konvertierung der Codepage 65000 durch CInt("&H" & Hex(65000)) gehen -536 ergeben. Zum Umkehren CLng("&H" & Hex(-536)) um 65000 wieder zurückzubekommen.
  • SpecID :Automatische Nummerierung für die Tabelle. Beachten Sie, dass dies nicht der Primärschlüssel der Tabelle ist. Diese Spalte wird mit MSysIMEXColumns.SpecID verwendet Aufzeichnungen zu beziehen. Es gibt jedoch keine Fremdschlüsseleinschränkung zwischen den beiden Tabellen, sodass verwaiste Löschungen auftreten können.
  • SpecName :Der Primärschlüssel der Tabelle. Es identifiziert die Spezifikation eindeutig. Immer wenn Sie eine Spezifikation speichern, wird der von Ihnen angegebene Name in diesem Feld aufgezeichnet. Wenn Sie mithilfe von Assistenten importieren oder exportieren, erstellt Access möglicherweise automatisch eine neue Spezifikation, selbst wenn Sie Advanced nicht verwendet haben und explizit speichern.
  • SpecType :Es kann nur entweder 1 sein um eine durch Trennzeichen getrennte Datei oder 2 anzuzeigen um eine Datei mit fester Breite zu bezeichnen.
  • StartRow :Bestimmt die Zeile in der Textdatei, um mit dem Scannen für den Import zu beginnen. Das kann eine beliebige Zahl sein, sodass es möglich ist, mehrere Zeilen am Anfang der Datei zu überspringen. Es kann für schlecht formatierte Textdateien mit nicht konformen Kopfzeilen nützlich sein.
  • TextDelim :Ein einzelnes Zeichen, das einen Textwert begrenzt. Es kann weggelassen werden, wenn der Text nicht getrennt wird. Wenn Sie das Format der Textdateien steuern können, ist es normalerweise eine gute Idee, Texttrennzeichen zu haben. Eine Textdatei mit Texttrennzeichen bleibt auch dann wohlgeformt, wenn der Text Feldtrennzeichen (z. B. ein Komma) im Text enthält.
  • TimeDelim :Gibt das für die Uhrzeit verwendete Trennzeichen an. Es kann ein beliebiges einzelnes Zeichen oder leer sein und ist standardmäßig : (ein Doppelpunkt).

MSysIMEXColumns Struktur

Die Tabelle beschreibt die einzelnen Spalten in der Textdatei und alle Attribute. Dies entspricht in etwa dem dritten Abschnitt der schema.ini . Es gibt jedoch zusätzliche Optionen wie Indexierung, die in schema.ini nicht vorhanden sind .

  • Attributes :Unbekannt. In meinen Tests habe ich nie etwas anderes als 0 bekommen . Wenn Sie wissen, wofür es ist und wie es verwendet werden kann, können Sie gerne einen Kommentar hinterlassen.
  • DataType :Der Datentyp der Spalte. Die Nummer sollte der DAO.DataTypeEnum entsprechen.
  • FieldName :Der Name der Spalte. Beachten Sie, dass Access standardmäßig FieldN verwendet wobei N ist eine positive ganze Zahl.
  • IndexType :Kann 0 sein um keine Indizes anzugeben, 1 um den regulären Index oder 2 anzuzeigen eindeutigen Index anzuzeigen.
  • SkipColumns :Ein boolescher Wert gibt an, ob die Spalte übersprungen werden soll. Wenn es übersprungen wird, steht es nicht zum Abfragen oder Lesen zur Verfügung.
  • SpecID :Entspricht der MSysIMEXSpecs.SpecID Auto Nummer. Beachten Sie, dass zwischen den beiden Tabellen keine Fremdschlüsseleinschränkungen bestehen. Wenn Sie Datensätze gelöscht haben, gibt es möglicherweise verwaiste Datensätze aus den MSysIMEXSpecs Tabelle.
  • Start :Eine Ganzzahl, die angibt, wann die Spalte in der Textdatei beginnt. Dies ist für eine Datei mit fester Breite von Bedeutung. Bei Dateien mit Trennzeichen verwendet Access weiterhin die Spaltenposition der ersten Zeile, in der das Feld gefunden wird, um den Anfang zu bestimmen. Darüber hinaus verwendet Access die Spalte, um die ordinale Reihenfolge der Spalten zu implizieren.
  • Width :Eine weitere Ganzzahl, um die Größe der Spalte zu steuern. Bei einer Datei mit fester Breite ist dies ebenfalls von Bedeutung. Beachten Sie, dass Microsoft Access diese Informationen für Datentypen mit variabler Länge wie Text oder Binärdateien verwendet, um die Spalte auch in einer Datei mit Trennzeichen entsprechend zu skalieren.

Verbindungszeichenfolge mit Spezifikationen:DSN Parameter

Im vorherigen Artikel haben Sie gesehen, dass keine Änderung an der Verbindungszeichenfolge vorgenommen wurde, um eine schema.ini-Datei zu verwenden. Wir haben implizit auf die schema.ini verwiesen indem Sie einfach sicherstellen, dass es in demselben Ordner vorhanden ist, in dem sich die Textdatei befindet, die wir verknüpfen oder öffnen. Um jedoch die gespeicherten Spezifikationen aus dem System verwenden zu können, müssen wir die Informationen in der Verbindung bereitstellen. Dazu füllen wir den DSN aus Parameter. Der Wert muss sich auf den Namen der gespeicherten Spezifikation beziehen, wie er in MSysIMEXSpecs.SpecName aufgezeichnet ist Spalte.

Hier ist ein Beispiel:

Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Text;DSN=Products Link Specification;IMEX=1;DATABASE=C:\Links")

Für den Zugriff müssen sowohl DSN-Parameter als auch IMEX-Parameter in der Verbindungszeichenfolge angegeben werden. Wenn Sie versuchen, den IMEX wegzulassen -Parameter erhalten Sie eine Fehlermeldung, dass Access die Spezifikation nicht finden kann, obwohl die Spezifikation in MSysIMEXSpecs vorhanden ist Tisch. Daraus folgt auch, dass die Tabelle einen Datensatz mit SpecName enthalten muss mit dem gleichen Wert wie im DSN angegeben Parameter.

Wie im vorherigen Artikel erwähnt, werden die einzelnen Textdateien als „Tabelle“ innerhalb der „Datenbank“ des Ordners behandelt. Obwohl die Verbindungszeichenfolge also nicht auf eine bestimmte Textdatei verweist, verwendet die Verbindungszeichenfolge die angegebenen Spezifikationen für alle Textdateien, die über die Verbindung geöffnet werden.

Obwohl es möglich ist, andere Parameter zu verwenden, wie im selben Artikel beschrieben, sollten Sie sich darüber im Klaren sein, dass bei einem Konflikt die gespeicherte Spezifikation Vorrang vor der Verbindungszeichenfolge hat. Aus diesem Grund ist es am besten, einen minimalen Satz von Parametern zu verwenden, der für eine erfolgreiche Verbindung zu einer Textdatei erforderlich ist, und die gespeicherten Spezifikationen die Aufgabe übernehmen zu lassen, zu beschreiben, wie die Textdatei zu lesen ist.

Schlussfolgerung

Sie haben eine alternative Möglichkeit kennengelernt, die Struktur der Textdatei zu beschreiben, ohne eine externe Datei zu verwenden. Wir haben uns angesehen, wie Access zwei Systemtabellen verwendet, um die Spezifikationen zu speichern. Zuletzt haben Sie auch gelernt, wie Sie die gespeicherten Spezifikationen über den DSN spezifizieren Parameter. An dieser Stelle haben wir alles behandelt, was wir über das Verknüpfen oder Öffnen von Textdateien in Access wissen müssen. Im nächsten Artikel werden wir die Informationen, die wir im Rest der Serie gelernt haben, zusammenfassen. Wir werden uns auch mit der Verwendung der Verbindungszeichenfolgen in Access-Abfragen für einen No-Code-Ansatz befassen.