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

Otwieranie lub łączenie tekstu lub programu Excel jako źródeł danych w programie Microsoft Access

Otwieranie lub łączenie tekstu lub programu Excel jako źródeł danych w programie Microsoft Access

Access to fenomenalne narzędzie do pracy z wieloma źródłami danych. Być może od dawna wiesz, że możesz łatwo importować lub eksportować dane w wielu różnych formatach. Mieliśmy jednak scenariusz, w którym musieliśmy przetwarzać dane z zewnętrznych źródeł danych. Przetwarzanie odbywa się często, więc importowanie danych szybko rozszerzyłoby plik frontonu. Ponadto w tej sytuacji utworzenie drugiej kopii pliku Access jako tymczasowej bazy danych w celu uniknięcia rozrostu nie było realną opcją. Jakie mieliśmy wybory? W tym miejscu zauważyliśmy niedostatek informacji dotyczących otwierania lub łączenia z nierelacyjnymi źródłami danych. Więc przyjrzyjmy się bliżej temu tematowi.

Ta seria blogów ma na celu wypełnienie luki w dokumentacji firmy Microsoft dotyczącej otwierania lub łączenia z tekstem lub programem Excel jako źródłem danych w aplikacjach programu Access. Connectionstrings.com i inne witryny udostępniają pewne okruszki. Możesz również zwykle odkryć niektóre zachowania, korzystając z kreatorów programu Access, a następnie badając obiekty. Jednak odgadywanie nie jest szczególnie przydatne. Dlatego w tej serii artykułów omówimy, jak używać plików Excel i tekstowych jako źródeł danych bez konieczności importowania lub eksportowania danych.

Należy pamiętać, że seria nie byłaby możliwa bez pomocy Dana Haughta i Jima Fergusona, współautorów przewodnika programisty aparatu bazy danych Microsoft Jet. Mimo że książka dawno się skończyła, nadal jest cenną książką, jeśli dużo pracujesz z DAO.

Dostęp i nierelacyjne źródła danych

Program Access zawsze wspierał stosowanie metody Indexed Sequential Access Method (ISAM) jako potencjalnego źródła danych, co umożliwia importowanie, łączenie lub eksportowanie do nierelacyjnych źródeł danych, takich jak pliki tekstowe lub arkusze kalkulacyjne Excel, a nawet inne formaty plików, takie jak Exchange, dBASE lub FoxPro. DAO to umożliwia, ponieważ posiada sterowniki ISAM, które mogą pracować z tymi formatami. Skoncentruję się jednak na plikach tekstowych i arkuszach kalkulacyjnych Excel, ponieważ są one bardziej powszechnymi źródłami, z którymi potrzebujemy Access do pracy. Jeśli wszystko, co kiedykolwiek zrobiłeś, to importowanie danych za pomocą karty Dane zewnętrzne za pośrednictwem programu Access, może to wydawać się magiczne, ale w rzeczywistości wszystkie funkcje programu Access są dostępne dla nas jako programistów na poziomie DAO.

Zapomnijmy więc, że czarodzieje istnieją. Zapomnijmy o błyszczących ikonach na wstążce. Zapomnijmy, że istnieją tabele połączone. Po prostu użyjmy kodu VBA do pracy ze źródłami danych z powietrza. Czy możemy? Absolutnie. Najpierw przyjrzymy się różnicy między łączeniem a otwieraniem źródła danych.

Łączenie a otwieranie

Aby pomóc w terminologii, musimy rozróżnić linkowanie a otwieranie . Łączenie oznacza, że ​​tworzymy połączoną tabelę, która jest teraz „tabelą” programu Access, której możemy używać tak jak każdej innej tabeli programu Access. Jako taki jest to stały obiekt zdefiniowany w aplikacji Access. W przeciwieństwie do tego, otwieranie ma miejsce, gdy uzyskujemy bezpośredni dostęp do źródła danych za pomocą OpenDatabase DAO metoda. Ze swej natury otwarcie źródła danych odbywa się zwykle za pomocą kodu VBA, jak wkrótce zobaczysz.

Konfigurowanie próbek i kodu

Ponieważ seria dotyczy zrozumienia najdrobniejszych szczegółów dotyczących interakcji programu Access z tymi źródłami danych, najpierw skupimy się na otwieraniu, a nie na łączeniu tutaj. Jak więc otworzyć arkusz kalkulacyjny Excel? Na pewno nie jest to baza danych? Stwórzmy minimalny przykład na początek. W folderze C:\Links , utworzymy arkusz kalkulacyjny Excel i plik bazy danych Access o nazwie Products.xlsx i Sample.accdb , odpowiednio:

Products.xlsx to prosty arkusz kalkulacyjny zawierający tylko jeden arkusz o następującej treści:

W tym celu dodajmy kod VBA w Sample.accdb . W standardowym module:

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

Jeśli uruchomimy kod, w naszym bezpośrednim oknie powinniśmy otrzymać następujące dane wyjściowe:

Products      Count         
Apples         3            
Bananas        5            
Figs           8            

Więc mimo że Excel nie jest „bazą danych” (a jeśli używasz Excela jako bazy danych, szkoda, że ​​), nadal możemy udawać, że jest „bazą danych” i iterować po jej „tabelach” i „rekordach” przy użyciu znanych obiektów DAO. Cała magia pochodzi z tych parametrów połączenia:

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

Ale to nie musi być magiczne. Seria przeanalizuje części parametrów połączenia dla sterowników programu Excel i plików tekstowych. Zacznijmy więc od porównania z ciągiem połączenia ODBC, który być może znasz lepiej.

Typy źródeł danych

Jeśli łączyłeś się ze źródłami danych ODBC, prawdopodobnie zauważyłeś, że ciągi połączeń ODBC zwykle wyglądają mniej więcej tak:

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

Zastanawiałem się, dlaczego zawsze zaczynało się od ODBC ? Ta pierwsza część jest tym, czego DAO używa do identyfikacji typu źródła. Jednak ponieważ Excel nie jest bazą danych ODBC, musimy użyć Excel 12.0 Xml aby wskazać, że DAO musi używać określonego sterownika programu Excel. Na pozostałą składnię ciągu połączenia ma wpływ to, którego sterownika używamy w pierwszej części ciągu połączenia.

Oto częściowa lista możliwych typów źródeł danych, które MS Access rozpozna:

  1. Excel 8.0 :97-2003 pliki xls
  2. Excel 12.0 :pliki xlsb
  3. Excel 12.0 Xml :pliki xlsx
  4. Text :Dowolne pliki tekstowe

Istnieje więcej źródeł danych, w tym SharePoint, Exchange lub FoxPro, ale nie zamierzam ich omawiać. Mimo to pokazuje, że Access jest w stanie pracować z tymi źródłami tak samo jak z bazą danych, co może umożliwić nam użycie DAO do odczytywania zawartości. Pamiętaj, że gdy korzystamy z nierelacyjnych źródeł danych, nie wszystkie operacje mogą być w pełni obsługiwane. Na przykład możesz nie mieć uprawnień do edycji istniejącego wiersza, nawet jeśli możesz go wstawić.

Jednak jedno wyzwanie związane z otwarciem lub połączeniem ze źródłem danych oznacza, że ​​nie możesz po prostu zaimportować danych, a następnie edytować schematu, aby dopasować go do swoich potrzeb. Dlatego może się okazać, że domyślny schemat, który otrzymasz podczas łączenia, nie będzie tym, czego chcesz. Z tego powodu ważne będzie dogłębne zrozumienie parametrów połączenia. Dlatego w kilku następnych artykułach dowiesz się więcej o szczegółach parametrów połączenia zarówno dla plików Excel, jak i plików tekstowych.

Wnioski

Widziałeś, że jako alternatywę dla importowania danych zewnętrznych, możemy zdecydować się na połączenie lub nawet otwarcie zewnętrznego źródła danych za pomocą DAO. Możliwość łączenia lub otwierania zewnętrznego źródła danych jest bardzo słabo wykorzystywana. Nie należy jednak pomijać możliwości łączenia lub otwierania, ponieważ może to otworzyć nowe scenariusze, takie jak unikanie rozdęcia w wyniku importowania, zwłaszcza w zamkniętym środowisku. W następnym artykule omówię różne parametry używane przez sterownik Excel do konstruowania prawidłowego ciągu połączenia. W kolejnych artykułach przyjrzę się sterownikowi pliku tekstowego i parametrom połączenia. W ostatnim artykule połączymy to wszystko w całość.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jakie są 6 głównych składników programu Microsoft Access?

  2. Jak utworzyć bazę danych z szablonu w programie Access 2016

  3. Jak zmodernizować swój biznes w 2022 roku?

  4. Microsoft OLE DB Nieprzestarzały! Niech żyje ADO!

  5. UWAGA:Wersja pakietu Office 2204 może uszkodzić aplikacje programu Access