| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Глава 3. Использование внешних данных.
Глава 3. Использование внешних данных При работе с
любым приложением обработки данных всегда является актуальным вопрос, как
использовать те данные, которые уже были накоплены раньше другими программными
средствами и, следовательно, имеют другой формат. Access 2002
позволяет решить эту проблему стандартным способом — путем импорта
существующей таблицы базы данных, рабочего листа электронной таблицы или
текстового файла, созданных приложениями MS-DOS или Windows, во внутренний
формат базы данных Access (MDB). Естественно, что Access 2002 может также
экспортировать данные из таблиц базы данных формата MDB в любой формат,
из которого можно импортировать данные. Однако Access
является в этом смысле уникальной системой, т. к. она имеет еще один способ
использования данных, которые хранятся в других форматах. Система позволяет
присоединять таблицы из баз данных других форматов к базе данных Access и
работать с ними в исходном формате. После создания связи базы данных с внешней
таблицей присоединенную таблицу можно просматривать, изменять ее содержимое, т.
е. работать с ней как с внутренней таблицей базы данных Access. При этом другие
пользователи могут использовать файл таблицы в своих приложениях. Помимо файлов
баз данных, Access может работать непосредственно с файлами электронных таблиц,
текстовыми файлами, документами HTML, адресными книгами или импортировать данные
из этих файлов и документов XML. Для этого
используются либо встроенные драйверы ISAM (Index-Sequential Access Method—
Индексно-последовательный метод доступа), либо драйверы ODBC (Open
Database Connectivity — Открытый доступ к данным), либо поставщики данных
OLE DB. Все встроенные
драйверы устанавливаются автоматически в процессе инсталляции Access 2002. Из
драйверов ODBC в комплект поставки Microsoft Access входят три драйвера—
Microsoft SQL Server ODBC driver (Sqlsrv32.dll), FoxPro ODBC driver
(vfpodbc.dll) и Oracle ODBC driver (msorcl32.dll). Кроме того, устанавливаются
еще четыре провайдера OLE DB (Microsoft Jet 4.0 OLE DB Provider, Microsoft OLE
DB Provider for SQL Server, OLE DB Provider for ODBC Drivers, OLE DB Provider
for Oracle). Взаимодействие с
внешними данными через интерфейсы OLE DB и ODBC будет подробно рассматриваться в
гл. 17 на примере взаимодействия с Microsoft SQL Server. Использование
данных из остальных источников мы рассмотрим в этой главе.
Форматы данных, доступные для импорта, экспорта и
связывания Типы файлов,
данные из которых могут быть импортированы в базу данных Access или которые
могут быть связаны с базой данных Access, представлены в табл. 3.1. Вы можете
увидеть их, если в меню Файл (File) выберете команду Внешние данные,
Импорт (Get External Data, Import), а затем щелкнете мышкой по расширению
поля Типы файлов (Files of type) в диалоговом окне Импорт
(Import). Форматы, в которые можно экспортировать данные из базы данных
Access, приводятся в табл. 3.2. Их можно увидеть, если в меню Файл (File)
выбрать команду Экспорт (Exort) и затем щелкнуть кнопкой мыши по расширению поля
Типы файлов (Files of type). В обоих случаях первая строчка содержит
шаблоны файлов баз данных и проектов самой Microsoft Access, остальные приведены
в таблицах. Таблица
3.1. Типы файлов, импортируемых в Access 2002
По умолчанию
встроенные драйверы ISAM используются для доступа к файлам следующих типов:
другим базам данных и проектам Access, dBASE, Paradox, электронным таблицам
Microsoft Excel и Lotus 1-2-3, адресным книгам и папкам Microsoft Exchange и
Outlook, текстовым файлам и документам HTML и XML. И хотя для этого могут быть
использованы и соответствующие драйверы ODBC, рекомендуется применять именно
встроенные драйверы. Для доступа к
другим базам данных используются драйверы ODBC. Вы сможете импортировать данные
из любого источника ODBC, который имеет драйвер, удовлетворяющий спецификации
ODBC уровня 1. Таблица
3.2. Типы файлов, экспортируемых из Access 2002
Использование баз данных других
форматов Системы
управления реляционными базами данных различных производителей работают с
файлами баз данных определенного формата. Многие из них используют специальные
индексные файлы для ускорения поиска и сортировки данных в таблицах (см.
разд. "Создание и использование индексов" гл. 2). Access 2002
позволяет работать не только непосредственно с таблицами баз данных других
форматов, но и с индексными файлами этих таблиц. В этом разделе
будут описаны форматы баз данных, которые можно импортировать (присоединять) в
Access 2002, особенности работы с таблицами баз данных других форматов, а также
использование индексных файлов, преобразование типов данных и типичные ошибки,
возникающие при импорте таблиц. В большинстве
настольных СУБД каждая таблица базы данных хранится в отдельном файле, который
содержит и служебную информацию и данные в соответствующем формате. К служебной
относится информация, описывающая структуру файла, например имена и типы данных
полей таблицы, число записей в файле, длина файла и т. д. В отличие от
других СУБД, Microsoft Access хранит все объекты (кроме страниц доступа к
данным) в одном файле с расширением mdb. Кроме того, MDB-файл включает набор
системных таблиц, которые содержат всю необходимую информацию об объектах базы
данных, в том числе информацию о расположении и параметрах присоединенных таблиц
других форматов. По умолчанию системные таблицы не выводятся в окне базы данных
Access 2002. Чтобы получить доступ к этим таблицам, необходимо изменить один из
параметров Access. Для этого нужно выбрать команду Сервис, Параметры
(Tools, Options), раскрыть вкладку Вид (View) диалогового окна
Параметры (Options) и в группе Отображать (Show) установить флажок
Системные объекты (System Objects). Системные таблицы Access имеют доступ
только на чтение, поэтому они не могут модифицироваться
пользователем. Ниже описаны
форматы файлов баз данных, которые могут быть присоединены или импортированы
Access 2002.
Замечание
Формат файлов
таблиц и индексов dBASE III и dBASE IV является стандартным для систем
управления базами данных, работающих на персональных компьютерах. Система
управления базами данных Access 2002 позволяет присоединять индексные файлы
форматов NDX и MDX. При изменении присоединенной проиндексиро-ванной таблицы
dBASE Access автоматически обновляет индексные файлы. Замечание
Все
дополнительные файлы, используемые при импорте или присоединении таблиц баз
данных, должны быть размещены в одной папке с таблицей. Стоит также заметить,
что большинство приложений, работающих с файлами таблиц и индексов,
ис- пользуют для
этих файлов стандартные расширения, приведенные выше, хотя это и не является
обязательным. Поэтому определение конкретного формата файла таблицы базы данных
иногда может оказаться нетривиальным. Присоединение и импорт внешних таблиц Прежде чем
перейти к вопросам, связанным с импортом и присоединением таблиц, нужно понять
разницу между этими возможностями Access 2002. При импорте
таблицы из другой базы данных в рассматриваемом файле MDB создается новая
таблица Access, которая имеет ту же структуру (состав и типы полей), что и
исходная таблица, и содержит все данные исходной таблицы. После этого вы уже
работаете с новой таблицей в формате Access, которая не зависит от исходной
таблицы. Когда вы
присоединяете внешнюю таблицу, вы просто получаете доступ к таблице другого
приложения, можете использовать данные из этой таблицы, но при этом она остается
в старом приложении, в Access хранится только информация о связи. Оба приложения
(то, в котором эта таблица была создана, и приложение Access) могут работать с
этой таблицей одновременно. Однако для того, чтобы данные в присоединенной
таблице можно было не только просматривать, но и изменять, эта таблица
обязательно должна иметь ключевое поле. Обычно ключевое поле определяется в
процессе присоединения таблицы. С присоединенной
к базе данных Access 2002 внешней таблицей можно работать точно так же, как если
бы она содержалась в этой базе. Единственным ограничением является то, что
невозможно изменить структуру присоединенной таблицы (имена полей, типы данных и
т. д.). Однако название таблицы можно изменить (при этом имя файла внешней
таблицы не изменяется, изменяется только название (псевдоним) таблицы в базе
данных Access), например, сделать его более понятным, т. к. ограничения на имя
таблиц в Access менее жесткие, чем в других СУБД. Кроме того, в
присоединенной таблице можно в режиме Конструктора изменять ряд свойств полей
(формат, надпись, маску ввода, число десятичных знаков), которые влияют только
на то, как эта таблица будет отображаться в Access. При этом в "родном"
приложении свойства полей не меняются. Замечание
Присоединение
внешних таблиц к базе данных Access 2002 бывает выгодным в следующих
случаях:
Использование
импорта внешних таблиц в базе данных Access 2002 оправдано в следующих
случаях:
При разработке
приложения, которое должно работать с присоединенными таблицами, можно временно
импортировать таблицу в базу данных, а затем на заключительной стадии разработки
перейти к использованию присоединенной таблицы. При этом, чтобы исключить
проблемы на этапе перехода от работы с импортированной таблицей на работу с
присоединенной, не изменяйте имена и типы данных полей импортированной таблицы.
В противном случае может потребоваться произвести множество изменений в
запросах, формах, отчетах, макросах и модулях VBA. Если разрабатываемое
приложение будет использовать таблицы Paradox, то не изменяйте и поля,
образующие первичный ключ. Если же предполагается использовать таблицы dBASE,
необходимо убедиться в том, что применяемые индексы соответствуют индексным
файлам (NDX и MDX) таблицы dBASE. Присоединение и импорт таблиц dBASE и Paradox Теперь можно
перейти непосредственно к описанию процесса присоединения и импортирования
внешних таблиц. Совет
Чтобы
присоединить или импортировать таблицу dBASE или Paradox в открытую базу данных
Access 2002:
Замечание
Замечание
Рис. 3.1.
Диалоговое окно Связь
Рис. 3.2.
Диалоговое окно Импорт Если
присоединяется файл dBASE, после этого появляется диалоговое окно Выбор
индексного файла (Select Index Files) (рис. 3.3). Это вызвано тем, что
индексные файлы dBASE (в отличие от Paradox) не присоединяются автоматически, т.
к. в заголовке файла dBASE не содержится информации об используемых индексах.
Заметьте, что это диалоговое окно не появляется при импорте таблицы
dBASE. Замечание
Системы
управления базами данных dBASE IV и dBASE 5 позволяют хранить несколько индексов
в одном файле (МDХ). Имя индексного файла обычно совпадает с именем таблицы. При
присоединении таблиц dBASE IV или dBASE 5 приложение Access 2002 ищет в папке, в
которой находится присоединяемая таблица, оба типа индексных файлов (и NDX, и
МDХ).
Рис. 3.3.
Диалоговое окно Выбор индексного файла Замечание
Замечание
Диалоговое окно
Связь (или Импорт) остается открытым после завершения операции, позволяя, если
это необходимо, присоединить или импортировать еще какие-либо внешние таблицы.
Повторите процедуру с шага 3 по шаг 8 для остальных таблиц базы
данных. Чтобы закрыть
диалоговое окно Связь (или Импорт), нажмите кнопку Закрыть (Close).
Присоединенные и импортированные таблицы появятся в окне базы данных. Слева от
значка присоединенной таблицы выводится стрелка, указывающая на то, что таблица
хранится во внешнем файле (рис. 3.4), а сам значок определяет тип (формат)
присоединенного файла. Дважды щелкните
левой кнопкой мыши по присоединенной таблице в окне базы данных. Внешняя таблица
будет открыта в режиме Таблицы (рис 3.5). Замечание
Рис. 3.4.
Присоединенные таблицы в окне базы данных В процессе
присоединения индексных файлов dBASE Access создает специальный файл, который
содержит перечень индексных файлов. Это обычный текстовый файл, который имеет
расширение inf и располагается в той же папке, что и присоединенная таблица.
Данный файл нельзя никуда перемещать, т. к. если Access не находит этого файла (или не находит
одного из индексных файлов, указанных в файле inf), работать с присоединенной
таблицей нельзя, и придется ее заново присоединять. .
Рис. 3.5.
Присоединенная таблица Paradox открыта в режиме
таблицы При
присоединении или импорте внешней таблицы Access 2002 читает заголовок файла
таблицы и преобразует типы данных полей внешней таблицы в типы данных Access.
Поскольку Access 2002 поддерживает больше типов данных, чем другие настольные
СУБД, преобразование типов происходит правильно. В табл. 3.3 приведено
соответствие между типами данных таблиц dBASE, Paradox и Access. Таблица
3.3. Соответствие типов данных некоторых СУБД
При импорте из
многопользовательской базы данных необходимо иметь монопольный доступ к
импортируемому файлу таблицы. При этом другие пользователи не будут иметь
доступа к файлу таблицы, пока не будет закрыто диалоговое окно Импорт
(Import). Замечание
Импорт или
присоединение таблиц из внешних источников данных с помощью драйверов ODBC
выполняется аналогично. В списке типов файлов окна Связь (или Импорт)
нужно установить значение ODBC Databases, после чего сразу появляется
диалоговое окно, в котором необходимо выбрать источник данных или создать новый.
После создания источника данных дальнейший процесс импорта (присоединения)
выполняется так же, как и для таблиц других баз данных. Импорт и
присоединение таблиц других форматов — достаточно сложный процесс, который не
всегда завершается успешно. При обнаружении проблем в процессе импорта файла
Access 2002 создает таблицу Ошибки импорта (Import Errors), которая
отображается в списке таблиц окна базы данных. Чтобы посмотреть обнаруженные
ошибки, откройте эту таблицу. Присоединение и импорт таблиц баз данных Access Присоединять к
базе данных Access можно не только файлы баз данных других форматов, но и
отдельные таблицы из других баз данных Access. Процедура присоединения таких
таблиц очень проста. Начало этой процедуры аналогично описанному выше
стандартному процессу присоединения внешних таблиц:
Если
присоединяемые таблицы являются связанными в своей базе данных, то эта связь
между ними сохраняется и в той базе данных, к которой они были присоединены.
Однако изменить свойства этой связи или удалить ее можно только в "родной" базе
данных. Импорт таблиц из
других баз данных Access выполняется аналогично присоединению, только
используется команда меню Файл, Внешние данные, Импорт (File, Get
External Data, Import)
и диалоговые окна Импорт (Import) и Импорт объектов (Import
Objects).
Рис. 3.6.
Диалоговое окно Связь с таблицами Импорт и присоединение электронных
таблиц Файлы, созданные
приложениями электронных таблиц, управления проектами и т. д. также представляют
собой таблицы специального вида. Было бы естественным включить в Access 2002
возможность импорта таких файлов в базу данных Access. И такая возможность в
Access 2002 есть. При этом Access 2002 поддерживает следующие
форматы:
Этих форматов
вполне достаточно, потому что практически все приложения, предназначенные для
работы с электронными таблицами, позволяют экспортировать данные в один из этих
форматов. Access 2002
позволяет создавать таблицы в базе данных, импортируя их из рабочего листа
Excel. При этом можно импортировать как целый рабочий лист, так и именованный
диапазон ячеек этого листа. Кроме того, в процессе импорта может быть создана
новая таблицы Access, которая будет содержать все импортируемые данные, или же
эти данные будут добавлены к уже существующей таблице Access. При добавлении
данных в существующую таблицу заголовки столбцов рабочего листа Excel (во всяком
случае, для тех столбцов, которые должны импортироваться) должны совпадать с
названиями полей этой таблицы. Замечание
Для того чтобы
импорт прошел без ошибок, данные на импортируемом листе должны быть
соответствующим образом организованы. На рис. 3.7 показан формат представления
данных на рабочем листе Excel, который наиболее подходит для импорта в базу
данных. Обратите внимание на то, что имена всех полей находятся в первой строке
таблицы, а оставшиеся строки содержат данные. Тип данных в каждой ячейке одного
столбца должен быть одинаковым, и в каждой строке должны использоваться одни и
те же поля. В таком виде таблица на рабочем листе максимально соответствует
таблице Access, что позволит упростить процесс импорта.
Рис. 3.7. Рабочий лист Excel Для того чтобы
подготовить данные на рабочем листе для импорта, может потребоваться выполнить
несколько предварительных действий.
Замечание
Теперь данные
рабочего листа можно импортировать в таблицу Access 2002. Для
этого:
Рис. 3.8.
Первое диалоговое окно Мастера импорта электронной
таблицы
Рис. 3.9.
Второе диалоговое окно Мастера импорта электронной
таблицы
Рис. 3.10.
Третье диалоговое окно Мастера импорта электронной
таблицы
Рис. 3.11.
Четвертое диалоговое окно Мастера импорта электронной
таблицы
Рис. 3.12.
Пятое диалоговое окно Мастера импорта электронной
таблицы Совет
Замечание
При
автоматическом определении типов данных полей импортируемой таблицы Access
просматривает первые 20 строк импортируемого диапазона ячеек. Например, если
каждый столбец в импортируемом диапазоне содержит числовые данные, то полю,
соответствующему этому столбцу, присвоится один из числовых подтипов данных
(выбор подтипа зависит от параметров форматирования рабочего листа Excel). Если
же в первых 20 ячейках столбца содержатся числа, а в остальных встречается
текст, то Access уже не изменяет тип данных поля, а создает таблицу ошибок
импорта, в которой каждая запись соответствует одной ошибке. После окончания
процесса импорта в случае возникновения ошибок выдается сообщение об этом (рис.
3.13) и указывается имя таблицы ошибок импорта. Таблица ошибок
импорта (рис. 3.14) позволяет найти записи, в которых возникли ошибки, и
исправить их. Однако более правильным способом будет исправить рабочий лист
Excel и повторить импорт данных. После исправления ошибок удалите эту
таблицу. Импортированная
таблица появится в окне базы данных. Чтобы проверить, что желаемый результат
достигнут, откройте импортированную таблицу в режиме Таблицы, дважды щелкнув по
ней левой кнопкой мыши.
Рис. 3.13.
Сообщение о возникновении ошибок импорта
Рис. 3.14.
Таблица ошибок импорта Чтобы узнать,
какие типы данных полей были выбраны при импорте рабочего листа, в окне базы
данных откройте созданную таблицу в режиме Конструктора (рис. 3.15). В отличие
от присоединенных таблиц, все свойства полей импортированных таблиц можно
изменить.
Рис. 3.15.
Импортированная таблица в режиме Конструктора Access 2002
позволяет также связать рабочий лист Excel с базой данных Access. Благодаря этой
возможности с присоединенным рабочим листом Excel можно работать как в исходном
формате средствами Excel, так и в формате таблицы базы данных Access, причем это
можно делать одновременно. Что касается изменения структуры рабочего листа, то
на него распространяются правила работы с присоединенными таблицами, т. е. в
режиме Конструктора можно изменить только те свойства полей, которые связаны с
отображением этих полей в таблицах Access. При изменении структуры таблицы или
перемещении ее в другую папку нужно обновить связь с ней. Присоединение
рабочего листа Excel выполняется практически так же, как и импорт, только
используется команда Связь с таблицами (Link Tables). Мастер связывания
электронной таблицы (Link Spreadsheet Wizard) аналогичен мастеру импорта, однако
он не позволяет выбирать столбцы рабочего листа и изменять их
параметры. Импорт и присоединение таблиц из текстовых
файлов Access 2002
позволяет импортировать в базы данных табличные данные из обычных текстовых
файлов. Эти файлы могут быть созданы либо одним из текстовых редакторов
(например, приложением "Блокнот" в Windows), либо путем экспорта из другого
приложения. Такая возможность особенно удобна в тех случаях, когда вам
необходимы данные из
приложения, которое не позволяет экспортировать данные из внутреннего
представления в форматы DBF, WKS или XLS. Существуют два
основных формата текстовых файлов, в которых содержатся табличные
данные:
Для файлов с
фиксированной шириной полей начало каждого поля определяется по его позиции
относительно начала строки. Строки имеют одинаковую длину и разделяются
символами новой строки (обычно это пара символов — возврат каретки и перевод
строки). Для файлов с
разделителями полей существует несколько стандартных вариантов разделения полей.
Они приведены в табл. 3.4. Таблица
3.4. Форматы текстовых файлов, поддерживаемые Access
2002
|