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

Параметри на низ за свързване за източници на данни в Excel

Параметри на низ за връзка за източници на данни в Excel

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

Параметри на низа за свързване в Excel

Въпреки че имаме 3 различни „типа“ източници на данни:

  1. Excel 8.0 :97-2003 xls файлове
  2. Excel 12.0 :xlsb файлове
  3. Excel 12.0 Xml :xlsx файлове

Всички те използват едни и същи параметри.

Ето списъка с параметри:

HDR параметър:Заглавен ред

YES :Първият ред е заглавието и трябва да стане имената на колоните за „таблицата“/“наборът от записи“
NO :Първият ред не се третира по различен начин и е просто данни. Всички имена на колони ще бъдат наречени „FN“, където „N“ е число, започващо с 1

IMEX параметър:Import/Export Behavior

Това урежда как трябва да се дефинират типовете данни в колоните въз основа на съдържанието:
1 :Ако колоната съдържа различни типове данни, третирайте я като низ. В противен случай съпоставете колоната с най-добрия тип данни.
2 :Винаги съпоставяйте колоната с определен тип данни въз основа на извадката. Това може да причини грешка при четенето, когато четем ред, който съдържа данни, които не съответстват на очаквания тип данни.

ACCDB параметър:Показва, че Access използва файлов формат ACCDB?

По подразбиране това винаги е зададено ACCDB=YES във файлов формат accdb. Въпреки това, пропускането или задаването му на НЕ изглежда не прави нищо. Това е малко мистерия. Ако някой може да сподели какъв ефект има този параметър, публикувайте в коментар и аз ще актуализирам блога.

БАЗА ДАННИ:Път до работната книга на Excel

Параметърът трябва да съдържа напълно квалифициран път, включително името на работната книга.

Минимален работен низ за връзка

Имайте предвид, че DATABASE е единственият задължителен параметър в допълнение към ключовата дума източник на типа данни. Следователно минималният работещ низ за връзка може да бъде:

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

Указване на лист или диапазон в низ за връзка

В предишната проба видяхте, че лист представлява „DAO.TableDef “. Работните листове обаче не са единственото нещо, което може да бъде „Tabledef “. Ако електронната таблица на Excel съдържа именуван диапазон, наименуваният диапазон ще бъде отчетен като „Tabledef ” също. Освен това можем да „запитваме“ произволен блок в листа, използвайки адрес на клетка. Например:

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

Важно е да се отбележи, че адресите на клетките не могат да надвишават използвания диапазон на листа. Например Products.xlsx всъщност има съдържание само в A1:B3, което означава, че ако отворите набор от записи с помощта на Sheet1$A1:D5, все още получавате само 2 за броя на полетата и 3 за броя на записите. Допълнителните празни колони/редове просто се игнорират. От друга страна, ако сте изцапали клетка някъде извън A1:B3 , UsedRange на листа сега ще бъде толкова по-голям и заявката ще включва празни колони и редове.

Следователно това са валидни имена, които да се използват в заявка към „база данни“ на Excel:

  1. Sheet1$ – Целият използван диапазон на работен лист.
  2. Sheet1$A1:B4 – Само 2 колони и 3 реда (без заглавието), при условие че съдържанието е попълнено. В противен случай колоните или редовете може да са по-малко от заявеното.
  3. ProductsRange – наименуваният диапазон с това име.

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

Запитване на източник на данни в Excel

Да предположим, че не можем да контролираме формата и не искаме да разчитаме на абсолютен адрес, въпреки че сме уверени, че определени колони и редове всъщност ще присъстват. В тази ситуация най-доброто нещо, което можете да направите, е да попитате. Ето пример, който избира само един ред:

  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

Надяваме се, че можете да видите, че това е много по-лесно, отколкото да преглеждате всеки ред, за да намерите кой от тях има „Банани“ и след това да четете колоната надясно, за да получите броя. В този случай заявките изпреварват автоматизирането на Excel.

Заключение

Видяхте, че DAO ни улеснява да работим с източник на данни в Excel и да се преструваме, че това е релационен източник на данни и да използваме любимия ни език за заявки и познати DAO обекти, вместо да пишем куп VBA код, автоматизиращ Excel, за да намерим данни, които искаме. Параметрите на низа за връзка са доста ясни и стига да имате пътя, вие сте добри за свързване или отваряне на електронна таблица в 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. Свързване с Microsoft Access в IRI Workbench

  2. Начини, по които достъпът може да спести пари за бизнеса ви

  3. Съвети за таблица на Microsoft Access – трикове и насоки, част 2

  4. 10 причини, поради които вашият бизнес се нуждае от Microsoft Access

  5. Използване на големи параметри за съхранена процедура на Microsoft SQL с DAO