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

Parametry ciągu połączenia dla źródeł danych Excel

Parametry ciągu połączenia dla źródeł danych Excel

W poprzednim artykule omówiłem, w jaki sposób możemy traktować Excel i pliki tekstowe tak, jakby były bazą danych przy użyciu DAO i jak możemy je otwierać bez łączenia. Ponieważ nie używają sterowników ODBC, ich parametry połączenia będą sformatowane zupełnie inaczej niż te, do których można przywyknąć w przypadku parametrów połączenia ODBC. Brakuje dokumentacji dotyczącej parametrów parametrów połączenia programu Excel. Jest to najlepszy sposób na pokrycie niektórych luk i omówienie konsekwencji parametrów.

Parametry ciągu połączenia programu Excel

Mimo że mamy 3 różne „typy” źródeł danych:

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

Wszystkie używają tych samych parametrów.

Oto lista parametrów:

HDR parametr:Wiersz nagłówka

YES :Pierwszy wiersz jest nagłówkiem i powinien stać się nazwami kolumn dla „tabeli”/”zestawu rekordów”
NO :Pierwszy wiersz nie jest traktowany inaczej i zawiera tylko dane. Wszystkie nazwy kolumn będą miały nazwę „FN”, gdzie „N” jest liczbą zaczynającą się od 1

IMEX parametr:Zachowanie importu/eksportu

To reguluje sposób definiowania typów danych kolumn na podstawie zawartości:
1 :Jeśli kolumna zawiera różne typy danych, potraktuj ją jako ciąg. W przeciwnym razie dopasuj kolumnę do najlepszego typu danych.
2 :Zawsze dopasowuj kolumnę do określonego typu danych na podstawie próbki. Może to spowodować błąd w odczycie, gdy odczytamy wiersz zawierający dane, które nie pasują do oczekiwanego typu danych.

ACCDB parametr:wskazuje, że program Access używa formatu pliku ACCDB?

Domyślnie jest to zawsze ustawione ACCDB=YES w formacie pliku accdb. Jednak pominięcie go lub ustawienie go na NIE wydaje się nic nie robić. To trochę tajemnica. Jeśli ktoś może podzielić się wpływem tego parametru, opublikuj w komentarzu, a ja zaktualizuję bloga.

BAZA DANYCH:Ścieżka do skoroszytu Excel

Parametr powinien zawierać w pełni kwalifikowaną ścieżkę, w tym nazwę skoroszytu.

Minimalny ciąg roboczy połączenia

Należy zauważyć, że DATABASE jest jedynym obowiązkowym parametrem oprócz słowa kluczowego źródła typu danych. Dlatego minimalny działający ciąg połączenia może wynosić:

Excel 8.0;DATABASE=C:\Links\Products.xls

Określanie arkusza lub zakresu w ciągu połączenia

W poprzednim przykładzie zauważyłeś, że arkusz reprezentuje „DAO.TableDef “. Jednak arkusze nie są jedyną rzeczą, która może być „Tabledef “. Jeśli arkusz kalkulacyjny Excel zawiera nazwany zakres, nazwany zakres zostanie zgłoszony jako „Tabledef " także. Dodatkowo możemy „zapytać” o dowolny blok w arkuszu za pomocą adresu komórki. Na przykład:

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\Links\Products.xlsx")
Set rs = db.OpenRecordsset("Sheet$1A1:A3")

Debug.Print rs.Name, rs.Fields.Count

Należy pamiętać, że adresy komórek nie mogą przekraczać zakresu używanego arkusza. Na przykład Products.xlsx w rzeczywistości ma zawartość tylko w A1:B3, co oznacza, że ​​jeśli otworzysz zestaw rekordów za pomocą Arkusza1$A1:D5, nadal otrzymasz tylko 2 dla liczby pól i 3 dla liczby rekordów. Dodatkowe puste kolumny/wiersze są po prostu ignorowane. Z drugiej strony, jeśli zabrudziłeś komórkę gdzieś poza A1:B3 , UsedRange arkusza będzie teraz tak samo większy, a zapytania będą wtedy zawierać puste kolumny i wiersze.

Dlatego są to prawidłowe nazwy do użycia w zapytaniu w „bazie danych” Excela:

  1. Sheet1$ – Cały używany zakres arkusza roboczego.
  2. Sheet1$A1:B4 – Tylko 2 kolumny i 3 wiersze (nie licząc nagłówka), pod warunkiem, że zawartość jest wypełniona. W przeciwnym razie kolumny lub wiersze mogą być mniejsze niż żądane.
  3. ProductsRange – nazwany zakres o tej nazwie.

Uważam, że o wiele przyjemniej jest używać nazwanych zakresów tam, gdzie jest to praktyczne, ponieważ zapewnia to, że nie kodujesz na stałe adresów w kodzie, zwłaszcza jeśli zakres jest przesuwany z powodu wstawienia przez użytkownika nowych kolumn lub wierszy, ale nie zmieniania zawartości nazwanego zakresu . Jednak nie zawsze jest to praktyczne, zwłaszcza jeśli otrzymujesz arkusze kalkulacyjne od strony trzeciej i dlatego nie masz kontroli nad ich zawartością ani formatami. W takim przypadku można również napisać zapytanie SQL.

Odpytywanie źródła danych Excel

Załóżmy, że nie możemy kontrolować formatu i nie chcemy polegać na adresie bezwzględnym, nawet jeśli jesteśmy pewni, że pewne kolumny i wiersze rzeczywiście będą obecne. W takiej sytuacji najlepiej jest wykonać zapytanie. Oto przykład, w którym zaznaczono tylko jeden wiersz:

  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 rs As DAO.Recordset
  Set rs = db.OpenRecordset("SELECT d.[Count] FROM [Sheet1$] AS d WHERE d.[Products] = 'Bananas';")
  Debug.Print rs.Fields(0).Value

Mam nadzieję, że widać, że jest to znacznie łatwiejsze niż iterowanie po każdym wierszu, aby znaleźć, który z nich zawiera „Banany”, a następnie czytanie kolumny w prawo, aby uzyskać liczbę. W takim przypadku wykonywanie zapytań bije na głowę automatyzację programu Excel.

Wniosek

Widzieliście, że DAO bardzo ułatwia nam pracę ze źródłem danych Excel i udawanie, że jest to relacyjne źródło danych, i używamy naszego ulubionego języka zapytań i znanych obiektów DAO zamiast pisać mnóstwo kodu VBA automatyzującego Excel, aby znaleźć dane, które chcemy. Parametry parametrów połączenia są dość proste i jeśli masz ścieżkę, możesz łączyć lub otwierać arkusz kalkulacyjny Excel.

W następnym artykule przyjrzymy się parametrom połączenia pliku tekstowego.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć zduplikowane rekordy w programie Access

  2. 10 porad i wskazówek dotyczących zarządzania wydajną bazą danych

  3. Poznaj Michała Bara i mnie na Microsoft Ignite!

  4. Parametry ciągu połączenia dla Schema.ini

  5. Jak utworzyć zapytanie parametryczne w programie Access