Access
 sql >> Baza danych >  >> RDS >> Access

Parametry ciągu połączenia dla zapisanych specyfikacji

Parametry ciągu połączenia dla zapisanych specyfikacji

Access udostępnia drugą metodę opisywania schematu plików tekstowych za pomocą tabel systemowych MSysIMEXSpecs i MSysIMEXColumns aby zapisać specyfikacje. W poprzednim artykule omówiłem, jak schema.ini może służyć do opisu struktury pliku tekstowego. schema.ini dotyczyło zewnętrznego pliku tekstowego, do którego odwołuje się niejawnie, ale w przypadku tabel systemowych nie mamy żadnych zewnętrznych zależności. Struktura jest dość inna, mimo że niektóre nakładają się.

MSysIMEXSpecs i MSysIMEXColumns tabela systemowa

Zamiast polegać na tym, że zewnętrzny plik schema.ini znajduje się w tym samym folderze co plik tekstowy, można podać specyfikacje pliku tekstowego w dowolnej ścieżce, odwołując się do zapisanej specyfikacji w bazie danych programu Access. Korzystając z kreatora importu lub eksportu, możesz zapisać lub załadować specyfikacje za pomocą Advanced przycisk.

Kliknięcie przycisku Zaawansowane spowoduje wyświetlenie okna dialogowego specyfikacji. Oprócz wczytywania lub zapisywania specyfikacji możesz również dostosować specyfikacje za pomocą pokazanego okna dialogowego.

Za każdym razem, gdy specyfikacja jest zapisywana, jest ona zapisywana w obu MSysIMEXSpecs i MSysIMEXColumns tabele systemowe. Tabele nie istnieją w nowych plikach programu Access i zostaną utworzone tylko za pierwszym razem. Co więcej, możesz edytować, a nawet usuwać dane z tych tabel. Mimo to nadal są tabelami systemowymi, więc są domyślnie ukryte. Jeśli chcesz je zobaczyć w panelu nawigacji, musisz przejść do Opcji nawigacji i włączyć widoczność zarówno dla obiektów ukrytych, jak i systemowych.

Jeśli porównasz dostępne opcje w oknie dialogowym z opcjami, które masz w schema.ini , widać kilka znaczących różnic. Na przykład schema.ini daje więcej możliwości wyboru sposobu formatowania dat lub kwot walutowych. Dzięki zapisanym specyfikacjom możemy kontrolować tylko formatowanie daty z wstępnie ustawionej listy możliwych formatów. Nie ma bezpośrednich opcji dla kwot walutowych, ponieważ używamy Typu danych do wskazania, że ​​kolumna powinna być importowana jako waluta niezależnie od formatowania. W ten sposób opcje tabel systemowych są proste w porównaniu do schema.ini. Następnie przyjrzymy się strukturze tabel.

MSysIMEXSpecs struktura

Tabela reprezentuje zestaw zapisanych specyfikacji. Dla każdego wiersza tabela opisuje ogólny format pliku, podobnie jak w drugiej sekcji schema.ini . Istnieją jednak różne opcje, które należy rozważyć.

  • DateDelim :Identyfikuje ogranicznik dat. Zazwyczaj jest to / lub - . Może to być tylko jeden lub zero znaków.
  • DateFourDigitYear :pole Tak/Nie wskazujące, czy daty są sformatowane za pomocą czterech cyfr oznaczających lata. Jeśli ustawione na tak, wartości takie jak 10/10/20 nie będą uważane za prawidłowe daty.
  • DateLeadingZeros :Kolejne pole Tak/Nie wskazujące, czy daty mają wiodące zera.
  • DateOrder :Określa formatowanie daty, którego chcemy użyć. Poprawne są następujące kody:
    • 0 :DMY
    • 1 :DYM
    • 2 :MDY
    • 3 :MYD
    • 4 :JDM
    • 5 :YMD
  • DecimalPoint :Wskazuje znak do oddzielenia części całkowitej i ułamkowej dla liczby dziesiętnej. Musi to być tylko jeden znak.
  • FieldSeparator :Oddziela pola w pliku tekstowym. W przypadku pliku CSV byłby to , (znak przecinka). Ponadto musi to być tylko jeden znak.
  • FileType :Podobne do schema.ini 's CharacterSet . Jak wspomniano w poprzednim artykule, możesz zlokalizować wszystkie możliwe strony kodowe obsługiwane na komputerze z systemem Windows, zajrzyj do klucza rejestru Computer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\ . Określa kodowanie pliku tekstowego. Możesz użyć tego samego identyfikatora strony kodowej. Jest jednak jeden problem. FileType jest zdefiniowany jako Integer . Dlatego strona kodowa 65000 (np. Unicode) zostanie zgłoszona jako -536. Aby przekonwertować dowolny identyfikator strony kodowej większy niż 32767, możesz użyć formuły CInt("&H" & Hex(x)) i odwrócić operację, CLng("&H" & Hex(x)) . Na przykład, konwersja strony kodowej 65000 przejdzie przez CInt("&H" & Hex(65000)) dać -536. Aby odwrócić, CLng("&H" & Hex(-536)) aby odzyskać 65000 z powrotem.
  • SpecID :Autonumerowanie tabeli. Zauważ, że nie jest to klucz podstawowy tabeli. Ta kolumna jest używana z MSysIMEXColumns.SpecID odnosić zapisy. Jednak nie ma ograniczenia klucza obcego między dwiema tabelami, więc mogą wystąpić osierocone usunięcia.
  • SpecName :klucz podstawowy tabeli. To jednoznacznie identyfikuje specyfikację. Za każdym razem, gdy zapiszesz specyfikację, podana przez Ciebie nazwa zostanie odnotowana w tym polu. Podczas importowania lub eksportowania za pomocą kreatorów program Access może automatycznie utworzyć nową specyfikację, nawet jeśli nie użyto opcji Advanced i wyraźnie go zapisz.
  • SpecType :Może to być tylko 1 oznaczający rozdzielany plik lub 2 aby oznaczyć plik o stałej szerokości.
  • StartRow :Określa wiersz w pliku tekstowym, aby rozpocząć skanowanie w celu importowania. Może to być dowolna liczba, dzięki czemu można pominąć kilka wierszy na górze pliku. Może być przydatny w przypadku źle sformułowanych plików tekstowych, które mają niezgodne nagłówki.
  • TextDelim :Pojedynczy znak, który ogranicza wartość tekstową. Można go pominąć, jeśli tekst nie jest rozdzielany. Jeśli możesz kontrolować format plików tekstowych, zwykle dobrym pomysłem jest posiadanie ograniczników tekstu. Plik tekstowy z ogranicznikami tekstu pozostanie dobrze sformułowany, nawet jeśli tekst zawiera separatory pól (np. przecinek) w tekście.
  • TimeDelim :Wskazuje znak ogranicznika używany dla czasu. Może to być dowolny pojedynczy znak lub być pusty i domyślnie : (znak dwukropka).

MSysIMEXColumns struktura

Tabela opisuje poszczególne kolumny w pliku tekstowym oraz wszelkie atrybuty. To mniej więcej odpowiada trzeciej sekcji schema.ini . Istnieją jednak dodatkowe opcje, takie jak indeksowanie, które nie istnieją w schema.ini .

  • Attributes :Nieznany. W moich testach nigdy nie udało mi się uzyskać czegoś innego niż 0 . Jeśli wiesz, do czego służy i jak można go używać, zostaw komentarz.
  • DataType :typ danych kolumny. Numer powinien odpowiadać DAO.DataTypeEnum.
  • FieldName :nazwa kolumny. Pamiętaj, że program Access będzie domyślnie ustawiony na FieldN gdzie N jest dodatnią liczbą całkowitą.
  • IndexType :może być 0 aby wskazać brak indeksów, 1 aby wskazać zwykły indeks lub 2 aby wskazać unikalny indeks.
  • SkipColumns :Wartość logiczna wskazuje, czy kolumnę należy pominąć. Jeśli zostanie pominięty, nie będzie dostępny do wysyłania zapytań ani czytania.
  • SpecID :Odpowiada MSysIMEXSpecs.SpecID numer samochodu. Zauważ, że między dwiema tabelami nie ma ograniczeń kluczy obcych. Jeśli usunąłeś rekordy, mogą być osierocone rekordy z MSysIMEXSpecs stół.
  • Start :Liczba całkowita wskazująca, kiedy kolumna zaczyna się w pliku tekstowym. Jest to istotne dla pliku o stałej szerokości. W przypadku plików rozdzielanych program Access będzie nadal używał pozycji kolumny pierwszego wiersza, w którym znajduje się pole, w celu określenia początku. Ponadto Access użyje kolumny, aby zasugerować porządek porządkowy kolumn.
  • Width :Kolejna liczba całkowita określająca rozmiar kolumny. W przypadku pliku o stałej szerokości jest to również istotne. Należy pamiętać, że program Microsoft Access użyje tych informacji dla typów danych o zmiennej długości, takich jak tekst lub binarny, do odpowiedniego rozmiaru kolumny, nawet w pliku rozdzielanym.

Ciąg połączenia przy użyciu specyfikacji:DSN parametr

W poprzednim artykule zauważyłeś, że nie wprowadzono żadnych zmian w parametrach połączenia w celu użycia pliku schema.ini. Niejawnie odwołaliśmy się do schema.ini po prostu upewniając się, że istnieje w tym samym folderze, w którym znajduje się plik tekstowy, który łączymy lub otwieramy. Jednak korzystanie z zapisanych specyfikacji z systemu wymaga podania przez nas informacji w połączeniu. Robimy to, wypełniając DSN parametr. Wartość musi odnosić się do nazwy zapisanej specyfikacji, zapisanej w MSysIMEXSpecs.SpecName kolumna.

Oto przykład:

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

Program Access będzie wymagał podania w ciągu połączenia zarówno parametru DSN, jak i parametrów IMEX. Jeśli spróbujesz pominąć IMEX zostanie wyświetlony błąd informujący, że program Access nie może znaleźć specyfikacji, mimo że specyfikacja istnieje w MSysIMEXSpecs stół. Wynika z tego również, że tabela musi zawierać rekord z SpecName zawierające tę samą wartość podaną w DSN parametr.

Jak wspomniano we wcześniejszym artykule, poszczególne pliki tekstowe są traktowane jako „tabela” w „bazie danych” folderu. Tak więc, chociaż ciąg połączenia nie wskazuje określonego pliku tekstowego, ciąg połączenia użyje określonych specyfikacji we wszystkich plikach tekstowych otwieranych za pośrednictwem połączenia.

Chociaż możliwe jest użycie innych parametrów, jak omówiono w tym samym artykule, należy pamiętać, że w przypadku konfliktu zapisana specyfikacja będzie miała pierwszeństwo przed ciągiem połączenia. Z tego powodu najlepiej jest użyć minimalnego zestawu parametrów wymaganych do pomyślnego połączenia z plikiem tekstowym i pozwolić, aby zapisane specyfikacje wykonały zadanie opisania sposobu odczytywania pliku tekstowego.

Wniosek

Poznałeś alternatywny sposób opisywania struktury pliku tekstowego bez korzystania z pliku zewnętrznego. Przyjrzeliśmy się, jak program Access używa dwóch tabel systemowych do przechowywania specyfikacji. Wreszcie, nauczyłeś się również określać zapisane specyfikacje za pomocą DSN parametr. W tym momencie omówiliśmy wszystko, co musimy wiedzieć o łączeniu lub otwieraniu plików tekstowych w programie Access. W następnym artykule zebramy razem informacje zdobyte w pozostałej części serii. Przyjrzymy się również używaniu parametrów połączenia w zapytaniach programu Access, aby uzyskać podejście bez kodu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dostęp do bazy danych SQL Server dla importerów z całego świata

  2. 5 oznak, że przerosłeś Excela

  3. Wskazówki dotyczące tabeli programu Microsoft Access — sztuczki i wskazówki, część 5

  4. Możesz teraz używać programu Access z usługą Microsoft Azure MFA!

  5. Jak automatycznie kompaktować i naprawiać bazę danych w programie Access 2016