Access
 sql >> база данни >  >> RDS >> Access

Параметри на низ за свързване за запазени спецификации

Параметри на низ за свързване за запазени спецификации

Access предоставя втори метод за описание на схемата на текстови файлове чрез използване на системни таблици MSysIMEXSpecs и MSysIMEXColumns за да запазите спецификациите. В предишната статия разгледах как schema.ini може да се използва за описание на структурата на текстов файл. schema.ini включва външен текстов файл, имплицитно посочен, но със системните таблици нямаме никакви външни зависимости. Структурата е доста различна, въпреки че има някои припокривания.

MSysIMEXSpecs и MSysIMEXColumns системна таблица

Вместо да разчитате на външна schema.ini, която да присъства в същата папка като текстовия файл, е възможно да се предоставят спецификации за текстов файл във всеки път, като се позовава на запазената спецификация в базата данни на Access. Когато използвате съветника за импортиране или експортиране, можете да запазите или заредите спецификациите чрез Advanced бутон.

Щракването върху бутона за разширени ще покаже диалоговия прозорец за спецификация. В допълнение към зареждането или запазването на спецификациите, можете също да персонализирате спецификациите, като използвате показания диалогов прозорец.

Всеки път, когато се записва спецификация, тя се записва и в MSysIMEXSpecs и MSysIMEXColumns системни таблици. Таблиците не съществуват в нови файлове на Access и ще бъдат създадени само за първи път. Освен това можете да редактирате или дори да изтривате данни от тези таблици. Въпреки това те все още са системни таблици, така че са скрити по подразбиране. Ако искате да ги видите в навигационния екран, ще трябва да отидете в опциите за навигация и да активирате видимостта както за скрити, така и за системни обекти.

Ако сравните наличните опции в диалоговия прозорец с опциите, които имате в schema.ini , можете да видите някои забележителни разлики. Например, schema.ini позволява повече избор по отношение на това как датите или валутните суми могат да бъдат форматирани. Със запазените спецификации можем да контролираме форматирането на датата само от предварително зададен списък с възможни формати. Няма директни опции за валутни суми, защото използваме типа данни, за да посочим, че колона трябва да бъде импортирана като валута, независимо от форматирането. По този начин опциите на системните таблици са прости в сравнение със schema.ini. След това ще прегледаме структурата на таблиците.

MSysIMEXSpecs структура

Таблицата представлява набор от запазени спецификации. За всеки ред таблицата описва цялостния формат на файла, подобно на втория раздел на schema.ini . Има обаче различни опции, които трябва да се обмислят.

  • DateDelim :Идентифицира разделителя за датите. Обикновено е / или - . Може да е само един или нула знак.
  • DateFourDigitYear :Поле Да/Не, което показва дали датите са форматирани с четири цифри за години. Ако е зададено да, стойности като 10/10/20 не се считат за валидни дати.
  • DateLeadingZeros :Друго поле Да/Не, което показва дали датите имат водещи нули.
  • DateOrder :Определя форматирането на датата, което искаме да използваме. Следните кодове са валидни:
    • 0 :DMY
    • 1 :DYM
    • 2 :MDY
    • 3 :MYD
    • 4 :YDM
    • 5 :YMD
  • DecimalPoint :Указва знака за разделяне на неразделната и дробната част за десетично число. Трябва да е само един знак.
  • FieldSeparator :Разделя полетата в текстовия файл. За CSV файл това би било , (знак запетая). Освен това трябва да е само един знак.
  • FileType :Подобно на schema.ini s CharacterSet . Както бе споменато в предишната статия, можете да намерите всички възможни кодови страници, поддържани на вашата машина с Windows, погледнете в ключа на системния регистър Computer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\ . Той идентифицира кодирането на текстовия файл. Можете да използвате същия идентификатор на кодовата страница. Има обаче един проблем. FileType се дефинира като Integer . Следователно кодова страница 65000 (например Unicode) ще бъде отчетена като -536. За да конвертирате идентификатор на кодова страница, по-голям от 32767, можете да използвате формула CInt("&H" & Hex(x)) и за да обърнете операцията, CLng("&H" & Hex(x)) . Например, преобразуването на кодова страница 65000 ще премине през CInt("&H" & Hex(65000)) да се получи -536. За да обърнете, CLng("&H" & Hex(-536)) за да получите отново 65 000.
  • SpecID :Автономер за таблицата. Имайте предвид, че това не е първичният ключ на таблицата. Тази колона се използва с MSysIMEXColumns.SpecID за свързване на записи. Между двете таблици обаче няма ограничение на външния ключ, така че могат да възникнат осиротели изтривания.
  • SpecName :Първичният ключ на таблицата. Той уникално идентифицира спецификацията. Всеки път, когато записвате спецификация, името, което предоставяте, ще бъде записано в това поле. Когато импортирате или експортирате с помощта на съветници, Access може автоматично да създаде нова спецификация, дори ако не сте използвали Advanced и изрично го запазете.
  • SpecType :Може да бъде само 1 за означаване на файл с разделители или 2 за означаване на файл с фиксирана ширина.
  • StartRow :Определя реда в текстовия файл, за да започне сканирането за импортиране. Това може да бъде произволно число, така че е възможно да пропуснете няколко реда в горната част на файла. Може да бъде полезно за неправилно оформени текстови файлове, които имат несъответстващи заглавки.
  • TextDelim :Единичен знак, който ограничава текстова стойност. Може да се пропусне, ако текстът не е разделен. Ако можете да контролирате формата на текстовите файлове, обикновено е добра идея да имате текстови разделители. Текстов файл с текстови разделители ще остане добре оформен, дори ако текстът съдържа разделители на полета (напр. запетая) в текста.
  • TimeDelim :Показва символа-разделител, използван за времето. Може да бъде произволен единичен знак или да е празен и по подразбиране е : (знак за двоеточие).

MSysIMEXColumns структура

Таблицата описва отделните колони в текстовия файл и всички атрибути. Това приблизително съответства на третия раздел на schema.ini . Има обаче допълнителни опции, като индексиране, което не съществува в schema.ini .

  • Attributes :Неизвестен. В моите тестове никога не съм го разбрал да е нещо освен 0 . Ако знаете за какво е и как може да се използва, не се колебайте да оставите коментар.
  • DataType :Типът данни на колоната. Номерът трябва да съответства на DAO.DataTypeEnum.
  • FieldName :Име на колоната. Имайте предвид, че Access по подразбиране ще е FieldN където N е цяло положително число.
  • IndexType :Може да е 0 за да посочите без индекси, 1 за да посочите обикновен индекс или 2 за да посочите уникален индекс.
  • SkipColumns :Булева стойност показва дали колоната трябва да бъде пропусната. Ако бъде пропусната, няма да бъде достъпна за запитване или четене.
  • SpecID :Съответства на MSysIMEXSpecs.SpecID автономер. Имайте предвид, че няма ограничения за външни ключове между двете таблици. Ако сте изтрили записи, може да има осиротели записи от MSysIMEXSpecs маса.
  • Start :Цяло число, показващо кога колоната започва в текстовия файл. Това е важно за файл с фиксирана ширина. За файлове с разделители Access все още ще използва позицията на колоната на първия ред, където се намира полето, за да определи началото. Освен това Access ще използва колоната, за да загатне реда на колоните.
  • Width :Друго цяло число, което управлява размера на колоната. При файл с фиксирана ширина това също е важно. Имайте предвид, че Microsoft Access ще използва тази информация за типове данни с променлива дължина, като например текст или двоичен файл, за да оразмери колоната по съответния начин дори във файл с разделители.

Низ за връзка, използващ спецификации:DSN параметър

В предишната статия видяхте, че няма промяна в низа за връзка, за да се използва файл schema.ini. Ние имплицитно се позовахме на schema.ini просто като се уверите, че той съществува в същата папка, където присъства текстовият файл, който свързваме или отваряме. Въпреки това, за да използвате запазените спецификации от системата, е необходимо да предоставим информацията във връзката. Правим това, като попълваме DSN параметър. Стойността трябва да се отнася до името на запазената спецификация, както е записано в MSysIMEXSpecs.SpecName колона.

Ето един пример:

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

Достъпът ще изисква както DSN параметър, така и IMEX параметри да бъдат предоставени в низа за връзка. Ако се опитате да пропуснете IMEX параметър, ще получите грешка, че Access не може да намери спецификацията, въпреки че спецификацията съществува в MSysIMEXSpecs маса. От това следва също, че таблицата трябва да съдържа запис с SpecName съдържащ същата стойност, предоставена в DSN параметър.

Както беше отбелязано в по-ранната статия, отделните текстови файлове се третират като „таблица“ в „база данни“ на папката. Така че въпреки че низът за връзка не сочи към конкретен текстов файл, низът за връзка ще използва посочените спецификации за всички текстови файлове, отворени чрез връзката.

Въпреки че е възможно да се използват други параметри, както е обсъдено в същата статия, трябва да сте наясно, че когато е в конфликт, запазената спецификация ще има предимство пред низа за връзка. Поради тази причина е най-добре да използвате минимален набор от параметри, необходими за успешно свързване с текстов файл, и да оставите запазените спецификации да свършат работата по описване как да четете текстовия файл.

Заключение

Научихте алтернативен начин да опишете структурата на текстовия файл, без да използвате външен файл. Разгледахме как Access използва две системни таблици за съхраняване на спецификациите. И накрая, вие също научихте как да посочите запазените спецификации с помощта на DSN параметър. На този етап покрихме всичко, което трябва да знаем за свързването или отварянето на текстови файлове в Access. В следващата статия ще обединим информацията, научена в останалата част от поредицата. Ще разгледаме и използването на низовете за свързване в заявките на Access за подход без код.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да групирате отчет в Access 2016

  2. Visual Basic за приложения в Microsoft Access

  3. 5 практически съвета за база данни за начинаещи

  4. Контролен изглед на дървовиден изглед Маркирайте отметка Добавяне на изтриване на възли

  5. Разплитане на новите ODBC и OLEDB драйвери на Microsoft SQL Server