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

Отваряне или свързване на текст или Excel като източници на данни в Microsoft Access

Отваряне или свързване на текст или Excel като източници на данни в Microsoft Access

Access е феноменален инструмент за работа с много източници на данни. Може би отдавна знаете, че можете лесно да импортирате или експортирате данни в широк спектър от формати. Имахме обаче сценарий, при който трябваше да обработваме данни от външни източници на данни. Обработката се изпълнява често, така че импортирането на данни бързо би раздуло предния файл. Освен това, в тази ситуация създаването на 2-ро копие на файла на Access като временна база данни, за да се избегне подуването, не беше жизнеспособна опция. Какъв избор имахме? Именно там забелязахме недостиг на информация относно отварянето или свързването към нерелационни източници на данни. И така, нека се потопим задълбочено по тази тема.

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

Моля, имайте предвид, че поредицата не би била възможна без помощта на Дан Хаут и Джим Фъргюсън, които са съавтор на Ръководството за програмиране на Microsoft Jet Database Engine. Въпреки че книгата отдавна е излязла от печат, тя все още е ценна книга, ако работите много с DAO.

Достъп и нерелационни източници на данни

Access винаги е поддържал използването на метода на индексиран последователен достъп (ISAM) като потенциален източник на данни, което му позволява да импортира, свързва или експортира към нерелационни източници на данни като текстови файлове или електронни таблици на Excel и дори други файлови формати като Exchange, dBASE или FoxPro. DAO го прави възможно, защото има ISAM драйвери, които могат да работят с тези формати. Въпреки това ще се съсредоточа върху текстовите файлове и електронните таблици на Excel, тъй като те са по-често срещани източници, където имаме нужда от Access, за да работим. Ако всичко, което някога сте правили, е да импортирате данни с помощта на раздела Външни данни чрез Access, може да изглежда магическо, но в действителност всички функции на Access са достъпни за нас като програмисти на ниво DAO.

Така че нека забравим, че магьосниците съществуват. Нека забравим за лъскавите икони на лентата. Нека забравим, че има свързани таблици. Нека просто използваме VBA код за работа с източници на данни, от нищото. Можем ли? Абсолютно. Първо, ще разгледаме разликата между свързването и отварянето на източник на данни.

Свързване срещу отваряне

За да помогнем с терминологията, трябва да направим разлика между свързване срещу откриване . Свързването означава, че създаваме свързана таблица, която вече е „таблица“ на Access, която можем да използваме точно както всяка друга таблица на Access. Като такъв, това е постоянен обект, дефиниран в приложението Access. За разлика от това отварянето е, когато имаме достъп до източника на данни директно, като използваме OpenDatabase на DAO метод. По своята същност отварянето на източник на данни обикновено става чрез VBA код, както ще видите скоро.

Настройване на пробите и кода

Тъй като поредицата е свързана с разбирането на тънките подробности за това как Access взаимодейства с тези източници на данни, първо ще се съсредоточим върху отварянето, вместо да свързваме тук. И така, как да отворим електронна таблица на Excel? Разбира се, това не е база данни? Нека да създадем минимален пример, с който да започнем. В папка C:\Links , ще създадем електронна таблица в Excel и файл с база данни на Access, наречен Products.xlsx и Sample.accdb , съответно:

Products.xlsx е проста електронна таблица само с един лист със следното съдържание:

С това нека добавим VBA код в Sample.accdb . В стандартен модул:

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

Ако изпълним кода, трябва да получим следния изход в нашия непосредствен прозорец:

Products      Count         
Apples         3            
Bananas        5            
Figs           8            

Така че, въпреки че Excel не е „база данни“ (и ако използвате Excel като база данни, срам за вас 😉), все пак можем да се преструваме, че е „база данни“ и да преглеждаме нейните „таблици“ и „записи“ използвайки познати DAO обекти. Цялата магия идва от този низ за връзка:

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

Но не е задължително да е магическо. Серията ще анализира частите от низовете за връзка за драйвери на Excel и текстови файлове. Така че нека започнем със сравнение с низа за връзка ODBC, с който може би сте по-запознати.

Типове източници на данни

Ако сте се свързали с ODBC източници на данни, вероятно сте забелязали, че низовете за връзка с ODBC обикновено изглеждат така:

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

Чудех се защо винаги започваше с ODBC ? Тази първа част е това, което DAO използва за идентифициране на типа източник. Въпреки това, тъй като Excel не е ODBC база данни, трябва да използваме Excel 12.0 Xml за да посочи, че DAO трябва да използва конкретен драйвер на Excel. Останалата част от синтаксиса на низа за връзка се влияе от това кой драйвер използваме в първата част на низа за връзка.

Ето частичен списък с възможни типове източници на данни, които MS Access ще разпознае:

  1. Excel 8.0 :97-2003 xls файлове
  2. Excel 12.0 :xlsb файлове
  3. Excel 12.0 Xml :xlsx файлове
  4. Text :Всички текстови файлове

Има повече източници на данни, включително SharePoint, Exchange или FoxPro, но няма да ги обхващам. Въпреки това, той демонстрира, че Access е в състояние да работи с тези източници точно като база данни и това може да ни позволи да използваме DAO за четене на съдържанието. Имайте предвид, че когато използваме нерелационни източници на данни, не всички операции може да се поддържат напълно. Например, може да не ви бъде позволено да редактирате съществуващ ред, въпреки че можете да вмъкнете ред.

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

Заключения

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете обикновена заявка за избор в Design View в Access 2016

  2. Намерете всички заявки, които използват конкретна таблица

  3. TRANSACTION_MUTEX и достъп до многосесийни транзакции

  4. Как да преименувате таблица в Microsoft Access

  5. Разбиране на модела ACID за управление на бази данни