Импортно-экспортные операции. Часть первая, экспорт
Как это ни банально, но в этот раз речь пойдет о том, что из себя представляют данные и что нам с ними делать. О том, что на персональный компьютер можно переложить массу рутинных операций, разработчики знали достаточно давно, в результате чего и выдали "на гора" массу разнообразных программ самого различного назначения. Однако вскоре, лет примерно через пять-шесть, эти же ребята, а также их покупатели, оказались один на один с весьма и весьма серьезной проблемой. Совершенно однородные, с точки зрения человека, данные в мире компьютеров стали приобретать какие-то новые черты, нам, простым смертным, абсолютно непонятные, во всяком случае, с ходу. Взять, к примеру, обычную иллюстрацию. Картинка, она и есть картинка, лишь бы должную наглядность обеспечивала. Но вот именно это персональный компьютер и не интересует, куда больше его волнуют другие вопросы, типа: картинка векторная или растровая, в какой конкретно формат она упакована и так далее и тому подобное. На практике подобные нестыковки оборачивались проблемами ничуть не меньшими, чем айсберг для знаменитого "Титаника".
Вы создали некое малюсенькое предприятие. Оборот у него поначалу мизерный, штат - крохотный, стало быть и бухгалтерия незначительная. Первое время вы свободно обходитесь одним калькулятором и одной тетрадкой в клеточку. Бизнес идет успешно, и года через полтора оказывается, что один только реестр продаж за месяц едва умещается в толстенном журнале. Казалось бы, какие проблемы, или вы телевизор не смотрите? Купите себе компьютер, установите даром пиратскую копию электронных таблиц и работайте дальше на здоровье. Только вот вскоре всплывает серьезная проблема. Одни данные уже "электронные", другие - еще "бумажные", и вместе они никак не могут быть обработаны. А чтобы воспользоваться всеми достоинствами автоматизации, вы внезапно оказываетесь перед необходимостью огромных трудозатрат на перенос нужной информации из одной формы в другую.
Кстати говоря, именно этим объясняется нынешняя монополия Microsoft Corporation на операционные системы и офисные программы. Больно дорого будет перейти на новую ОС, так как в этом случае придется потратить миллионы рабочих часов и миллиарды долларов на перенос ранее накопленных данных в новые форматы.
Ну да ладно, дело не в этом. Дело в том, что за последние десять лет в этой области произошли огромные подвижки. И в самую первую очередь они коснулись области баз данных, как наиболее зависимой от формата представления. По сути любая база напоминает хороший склад, где хранятся самые различные факты, которые складываются сегодня, но пользоваться ими станут завтра, и только один бог знает, в каком виде эти факты тогда понадобятся.
Причем актуальность вышеуказанной проблемы именно для баз данных определяется еще и тем, что среди хранимой информации львиную долю и, естественно, первое место занимает информация коммерческая, финансовая и, соответственно, налоговая, то есть та, которая стоит дороже всего.
Так родилась идея некоего, единого для всех, структурированного языка запросов (Structured Query Language, SQL). Если база данных есть некое глобальное хранилище данных, выдаваемых на экран в ответ на определенным образом оформленный запрос, то почему нельзя придумать некую общую структуру запросов, формализовать ее и создать, таким образом, своего рода универсальный язык запросов, при помощи которого можно будет обратиться к любой базе данных вообще. В конце концов, любой человеческий язык содержит существительные, прилагательные и глаголы. В общем, вскоре этот самый SQL был создан, но его поразила та же болезнь, которой страдают любые стандарты мира ИБМ-совместимых компьютеров. Каждый крупный разработчик софта начал создавать собственный вариант вроде как стандартного языка, и через некоторое время эти вариации перестали понимать друг друга. Чтобы болезнь не зашла слишком далеко, в 1991 году Microsoft Corporation предложила собственный единый интерфейс Открытого Доступа к Данным (Open Database Connectivity, ODBC). Идея оказалась удачной, и ее поддержало большинство разработчиков. В результате возникла достаточно удобная ситуация: все данные организовываются в строго определенном порядке (посредством ODBC), а пользователи могут обращаться к ним через ту или иную версию языка запросов (SQL).
А все эти хитрости я рассказал потому, что в настоящее время практически любая СУБД, и в особенности Microsoft Access, оборудована удобным механизмом, позволяющим не только экономить прорву рабочего времени при переходе на новые типы баз данных, но и вообще легко и относительно безболезненно переходить с одной программы работы с данными на другую. В частности, например, без всякой опаски начинать свой бизнес с той же Microsoft Access, а потом, если рамки этой "микросовтовской" СУБД окажутся тесными, перейти на продукты 1С, но сохранить доступ к уже ранее накопленным массивам данных. Этот механизм получил название экспорт-импорт. Вкратце он выглядит следующим образом. Если по тем или иным причинам у вас нет возможности обратиться к имеющимся данным напрямую (ну, например, если "гранаты не той системы"), то можно экспортировать необходимую информацию в определенный промежуточный формат, а потом импортировать данные из него в ваше приложение.
Есть тут однако и свои тонкости. Теоретически, разработчик имеет две близкие возможности - импорта и присоединения, а ранее уже упоминалось, что в Microsoft Access вы можете получать данные не только из "своих" таблиц, но и из "чужих", расположенных в других, "внешних", базах данных.
При импорте вы как бы получаете копию чьих-то данных и помещаете ее в свою базу. Это удобно, если: указанные данные не меняются или меняются крайне редко; данные занимают небольшой объем; данные переводятся из старого формата в новый и в прежнем виде больше храниться не будут; если вы работаете на маломощном компьютере, который непозволительно долго "думает" каждый раз, когда ему приходится заниматься конвертацией данных из одного формата в другой.
Однако присоединение также имеет свои выигрышные стороны. Не стоит забывать, что любая СУБД имеет свои собственные ограничения на максимальный объем одной базы данных, при превышении которого база может элементарно "заболеть склерозом", а то и вообще "накрыться". Единственным выходом из подобной ситуации является разнесение таблиц по отдельным базам. Потом без присоединения никак не обойтись, если данные обновляются часто, а значит любая их копия непозволительно быстро теряет свою актуальность. Да и многопользовательский доступ может оказаться серьезной проблемой.
В общем, в этом деле нет единого кодекса рекомендаций, конкретное решение вырабатывается для каждого случая отдельно. Но в целом, чтобы лучше ориентироваться в процессе, следует запомнить несколько простых правил. Во-первых, любая операция экспорта-импорта касается только отдельного объекта базы данных (таблицы, запроса или отчета), а не всей базы в целом. Во-вторых, любая экспортно-импортная операция создает абсолютно обособленную копию этого объекта, никак не связанную с оригиналом. В-третьих, касательно продуктов Microsoft Access, если вы пользуетесь Microsoft Word и Microsoft Excel, то и в качестве СУБД лучше всего использовать Microsoft Access, так как в рамках пакета MS Office Microsoft Corporation создала тесный и весьма удобный механизм передачи данных из одного приложения в другое, что значительно расширяет рамки ваших возможностей без необходимости освоения новых специальных навыков, например, в области прикладного или системного программирования.
В Microsoft Access экспортно-импортные операции разбиты на две большие области. Одна из них касается сохранения данных в формате Microsoft Access в текущей или внешней базе данных. Другая позволяет производить мгновенную конвертацию в другие приложения MS Office. Это, в частности, позволяет реализовать, например, такой прием, как автоматическую генерацию отчета непосредственно в базе данных предприятия, последующий ее перенос в Microsoft Word и окончательное доредактирование уже чисто текстового документа в текстовом же редакторе с последующим выводом на печать во всей красе и блеске хорошо сверстанного бумажного издания. Итак, как это делается.
Простое сохранение любого элемента базы данных, в том числе модуля, формы или макроса, в текущую или внешнюю базу производится в два шага. На первом, вы выделяете (открывать не обязательно) конкретный объект. На втором, вы открываете системное меню ФАЙЛ и выбираете там режим СОХРАНИТЬ КАК/ЭКСПОРТ. Программа выведет на экран окно диалога (см. рис. 1), в котором поинтересуется, куда сохранять, в текущую базу или еще куда? В зависимости от надобности вы либо переключаетесь в режим " В текущей базе данных" и указываете новое имя для копии, либо остаетесь в положении "по умолчанию", т.е. " Во внешнем файле или базе данных". В последнем случае открывается еще один диалог (см. рис. 2), при помощи которого и производится экспорт. В нижней части экрана в строках " Имя файла" и " Тип файла" пользователь задает формат, в котором следует производить экспорт. Если вы при инсталляции Microsoft Access ничего не добавляли, то по умолчанию экспорт можно произвести в форматы нескольких версий СУБД Paradox, в несколько версий Excel, в Word, в целый ряд "чистых" текстовых форматов (в том числе txt), в знаменитый формат rtf и, конечно же, в формат ODBC. Также возможно сохранение в "интернетовский" формат HTML, что позволяет быстро публиковать эти элементы во Всемирной Паутине. Вообще говоря, вы получаете две возможности. Если ничего не менять, кроме формата, то выделенный элемент будет сохранен как новая база данных соответствующего типа. Вторая возможность заключается в том, что выделенный элемент можно перенести в другую, уже существующую базу одного из вышеперечисленных типов. Microsoft Access задаст только один уточняющий вопрос (см. рис. 3): что конкретно вы хотите сохранить, весь элемент или только его структуру? Этот прием позволяет легко тиражировать проекты баз данных путем копирования только структуры без конкретных данных, быстро, удобно, дешево.
Примерно также производится передача информации из Microsoft Access в другие приложения Office. После выделения конкретного объекта следует обратиться в меню СЕРВИС и открыть выпадающее меню СВЯЗЬ с OFFICE (см. рис. 4). Там предусмотрено три варианта: слияние с Microsoft Word, публикация в Microsoft Word и анализ в Microsoft Excel. Начнем с последнего.
Любая таблица, запрос или отчет Microsoft Access могут быть переконвертированы в формат Microsoft Excel. При этом компьютер выполнит следующие действия. Сначала он проведет анализ принципиальной возможности выполнения такой операции. Потом произведет перевод всех внутренних формул и прочих математических и/или логических операций в термины "понятные" электронной таблице. И в конце откроет Microsoft Excel и произведет загрузку получившейся таблицы, которую в дальнейшем можно обрабатывать как любую другую таблицу Microsoft Excel.
Режим ПУБЛИКАЦИЯ В Microsoft Word, полагаю, понятен и без дополнительных разъяснений. Любой элемент базы данных может быть автоматически переконвертирован в текстовое представление, понятное для текстового редактора. Причем упоминание Microsoft Word на самом деле является не более чем реверансом, так как в процессе процедуры программа предложит указать один из нескольких текстовых форматов, и применение, например, rtf обеспечивает связь с любым редактором, rtf "понимающим", а таких сегодня - тьма тьмущая.
Третий режим, режим слияния, по большому счету, к экспорту-импорту имеет весьма отдаленное отношение. На самом деле он предназначен для быстрого решения, например, такой задачи, как подготовка широкой почтовой рассылки, когда требуется разослать большое количество писем по адресам, хранящимся в базе данных предприятия. Выполнить такую работу вручную я бы и самому заклятому врагу не пожелал бы, а компьютер справляется с задачей печати адресов легко и красиво. После выбора режима СЛИЯНИЕ С Microsoft Word программа "спрашивает", с чем сливать - с имеющимся документом или создавать новый? И в соответствии с этим либо обратится к указанному документу, либо запустит Microsoft Word еще раз и откроет в нем новый чистый документ. В любом случае в текстовом редакторе будет активизирована инструментальная панель для работы с полями базы данных и установлена связь с конкретной таблицей базы данных. Вам останется только набрать текст постоянных надписей, вставить наименования полей (чтобы при распечатывании программа заменила их конкретным содержимым) - и все, можно печатать.
С экспортом, пожалуй, все. Как вы уже поняли, такой механизм позволяет добиться очень и очень многого, заставив компьютер выполнить всю черновую работу. Правда, для успешного решения этой задачи требуется немного практического опыта и, это самое главное, представление о том, как на самом деле "оно работает". Представляя, пусть даже в теории, основные этапы и алгоритмы и имея немного воображения, можно создавать шедевры автоматизации. В принципе, в идеале, становится возможным даже создать автоматизированную структуру, по заданному графику самостоятельно генерирующую, например, еженедельный отчет о деятельности отдела маркетинга или склада готовой продукции. В Microsoft Word создается стандартная "рыба" со всеми необходимыми постоянными надписями. Посредством механизма слияния в заданные места вставляются конкретные поля, которые программа заменит на их фактическое содержание. В Microsoft Access пишется макрос, выполняющий такую вставку в готовый текстовый документ. Все, работа закончена. Вам останется только подчистить сущие мелочи и отправить результат на печать.
Александр Запольскис
Вы создали некое малюсенькое предприятие. Оборот у него поначалу мизерный, штат - крохотный, стало быть и бухгалтерия незначительная. Первое время вы свободно обходитесь одним калькулятором и одной тетрадкой в клеточку. Бизнес идет успешно, и года через полтора оказывается, что один только реестр продаж за месяц едва умещается в толстенном журнале. Казалось бы, какие проблемы, или вы телевизор не смотрите? Купите себе компьютер, установите даром пиратскую копию электронных таблиц и работайте дальше на здоровье. Только вот вскоре всплывает серьезная проблема. Одни данные уже "электронные", другие - еще "бумажные", и вместе они никак не могут быть обработаны. А чтобы воспользоваться всеми достоинствами автоматизации, вы внезапно оказываетесь перед необходимостью огромных трудозатрат на перенос нужной информации из одной формы в другую.
Кстати говоря, именно этим объясняется нынешняя монополия Microsoft Corporation на операционные системы и офисные программы. Больно дорого будет перейти на новую ОС, так как в этом случае придется потратить миллионы рабочих часов и миллиарды долларов на перенос ранее накопленных данных в новые форматы.
Ну да ладно, дело не в этом. Дело в том, что за последние десять лет в этой области произошли огромные подвижки. И в самую первую очередь они коснулись области баз данных, как наиболее зависимой от формата представления. По сути любая база напоминает хороший склад, где хранятся самые различные факты, которые складываются сегодня, но пользоваться ими станут завтра, и только один бог знает, в каком виде эти факты тогда понадобятся.
Причем актуальность вышеуказанной проблемы именно для баз данных определяется еще и тем, что среди хранимой информации львиную долю и, естественно, первое место занимает информация коммерческая, финансовая и, соответственно, налоговая, то есть та, которая стоит дороже всего.
Так родилась идея некоего, единого для всех, структурированного языка запросов (Structured Query Language, SQL). Если база данных есть некое глобальное хранилище данных, выдаваемых на экран в ответ на определенным образом оформленный запрос, то почему нельзя придумать некую общую структуру запросов, формализовать ее и создать, таким образом, своего рода универсальный язык запросов, при помощи которого можно будет обратиться к любой базе данных вообще. В конце концов, любой человеческий язык содержит существительные, прилагательные и глаголы. В общем, вскоре этот самый SQL был создан, но его поразила та же болезнь, которой страдают любые стандарты мира ИБМ-совместимых компьютеров. Каждый крупный разработчик софта начал создавать собственный вариант вроде как стандартного языка, и через некоторое время эти вариации перестали понимать друг друга. Чтобы болезнь не зашла слишком далеко, в 1991 году Microsoft Corporation предложила собственный единый интерфейс Открытого Доступа к Данным (Open Database Connectivity, ODBC). Идея оказалась удачной, и ее поддержало большинство разработчиков. В результате возникла достаточно удобная ситуация: все данные организовываются в строго определенном порядке (посредством ODBC), а пользователи могут обращаться к ним через ту или иную версию языка запросов (SQL).
А все эти хитрости я рассказал потому, что в настоящее время практически любая СУБД, и в особенности Microsoft Access, оборудована удобным механизмом, позволяющим не только экономить прорву рабочего времени при переходе на новые типы баз данных, но и вообще легко и относительно безболезненно переходить с одной программы работы с данными на другую. В частности, например, без всякой опаски начинать свой бизнес с той же Microsoft Access, а потом, если рамки этой "микросовтовской" СУБД окажутся тесными, перейти на продукты 1С, но сохранить доступ к уже ранее накопленным массивам данных. Этот механизм получил название экспорт-импорт. Вкратце он выглядит следующим образом. Если по тем или иным причинам у вас нет возможности обратиться к имеющимся данным напрямую (ну, например, если "гранаты не той системы"), то можно экспортировать необходимую информацию в определенный промежуточный формат, а потом импортировать данные из него в ваше приложение.
Есть тут однако и свои тонкости. Теоретически, разработчик имеет две близкие возможности - импорта и присоединения, а ранее уже упоминалось, что в Microsoft Access вы можете получать данные не только из "своих" таблиц, но и из "чужих", расположенных в других, "внешних", базах данных.
При импорте вы как бы получаете копию чьих-то данных и помещаете ее в свою базу. Это удобно, если: указанные данные не меняются или меняются крайне редко; данные занимают небольшой объем; данные переводятся из старого формата в новый и в прежнем виде больше храниться не будут; если вы работаете на маломощном компьютере, который непозволительно долго "думает" каждый раз, когда ему приходится заниматься конвертацией данных из одного формата в другой.
Однако присоединение также имеет свои выигрышные стороны. Не стоит забывать, что любая СУБД имеет свои собственные ограничения на максимальный объем одной базы данных, при превышении которого база может элементарно "заболеть склерозом", а то и вообще "накрыться". Единственным выходом из подобной ситуации является разнесение таблиц по отдельным базам. Потом без присоединения никак не обойтись, если данные обновляются часто, а значит любая их копия непозволительно быстро теряет свою актуальность. Да и многопользовательский доступ может оказаться серьезной проблемой.
В общем, в этом деле нет единого кодекса рекомендаций, конкретное решение вырабатывается для каждого случая отдельно. Но в целом, чтобы лучше ориентироваться в процессе, следует запомнить несколько простых правил. Во-первых, любая операция экспорта-импорта касается только отдельного объекта базы данных (таблицы, запроса или отчета), а не всей базы в целом. Во-вторых, любая экспортно-импортная операция создает абсолютно обособленную копию этого объекта, никак не связанную с оригиналом. В-третьих, касательно продуктов Microsoft Access, если вы пользуетесь Microsoft Word и Microsoft Excel, то и в качестве СУБД лучше всего использовать Microsoft Access, так как в рамках пакета MS Office Microsoft Corporation создала тесный и весьма удобный механизм передачи данных из одного приложения в другое, что значительно расширяет рамки ваших возможностей без необходимости освоения новых специальных навыков, например, в области прикладного или системного программирования.
В Microsoft Access экспортно-импортные операции разбиты на две большие области. Одна из них касается сохранения данных в формате Microsoft Access в текущей или внешней базе данных. Другая позволяет производить мгновенную конвертацию в другие приложения MS Office. Это, в частности, позволяет реализовать, например, такой прием, как автоматическую генерацию отчета непосредственно в базе данных предприятия, последующий ее перенос в Microsoft Word и окончательное доредактирование уже чисто текстового документа в текстовом же редакторе с последующим выводом на печать во всей красе и блеске хорошо сверстанного бумажного издания. Итак, как это делается.
Простое сохранение любого элемента базы данных, в том числе модуля, формы или макроса, в текущую или внешнюю базу производится в два шага. На первом, вы выделяете (открывать не обязательно) конкретный объект. На втором, вы открываете системное меню ФАЙЛ и выбираете там режим СОХРАНИТЬ КАК/ЭКСПОРТ. Программа выведет на экран окно диалога (см. рис. 1), в котором поинтересуется, куда сохранять, в текущую базу или еще куда? В зависимости от надобности вы либо переключаетесь в режим " В текущей базе данных" и указываете новое имя для копии, либо остаетесь в положении "по умолчанию", т.е. " Во внешнем файле или базе данных". В последнем случае открывается еще один диалог (см. рис. 2), при помощи которого и производится экспорт. В нижней части экрана в строках " Имя файла" и " Тип файла" пользователь задает формат, в котором следует производить экспорт. Если вы при инсталляции Microsoft Access ничего не добавляли, то по умолчанию экспорт можно произвести в форматы нескольких версий СУБД Paradox, в несколько версий Excel, в Word, в целый ряд "чистых" текстовых форматов (в том числе txt), в знаменитый формат rtf и, конечно же, в формат ODBC. Также возможно сохранение в "интернетовский" формат HTML, что позволяет быстро публиковать эти элементы во Всемирной Паутине. Вообще говоря, вы получаете две возможности. Если ничего не менять, кроме формата, то выделенный элемент будет сохранен как новая база данных соответствующего типа. Вторая возможность заключается в том, что выделенный элемент можно перенести в другую, уже существующую базу одного из вышеперечисленных типов. Microsoft Access задаст только один уточняющий вопрос (см. рис. 3): что конкретно вы хотите сохранить, весь элемент или только его структуру? Этот прием позволяет легко тиражировать проекты баз данных путем копирования только структуры без конкретных данных, быстро, удобно, дешево.
Примерно также производится передача информации из Microsoft Access в другие приложения Office. После выделения конкретного объекта следует обратиться в меню СЕРВИС и открыть выпадающее меню СВЯЗЬ с OFFICE (см. рис. 4). Там предусмотрено три варианта: слияние с Microsoft Word, публикация в Microsoft Word и анализ в Microsoft Excel. Начнем с последнего.
Любая таблица, запрос или отчет Microsoft Access могут быть переконвертированы в формат Microsoft Excel. При этом компьютер выполнит следующие действия. Сначала он проведет анализ принципиальной возможности выполнения такой операции. Потом произведет перевод всех внутренних формул и прочих математических и/или логических операций в термины "понятные" электронной таблице. И в конце откроет Microsoft Excel и произведет загрузку получившейся таблицы, которую в дальнейшем можно обрабатывать как любую другую таблицу Microsoft Excel.
Режим ПУБЛИКАЦИЯ В Microsoft Word, полагаю, понятен и без дополнительных разъяснений. Любой элемент базы данных может быть автоматически переконвертирован в текстовое представление, понятное для текстового редактора. Причем упоминание Microsoft Word на самом деле является не более чем реверансом, так как в процессе процедуры программа предложит указать один из нескольких текстовых форматов, и применение, например, rtf обеспечивает связь с любым редактором, rtf "понимающим", а таких сегодня - тьма тьмущая.
Третий режим, режим слияния, по большому счету, к экспорту-импорту имеет весьма отдаленное отношение. На самом деле он предназначен для быстрого решения, например, такой задачи, как подготовка широкой почтовой рассылки, когда требуется разослать большое количество писем по адресам, хранящимся в базе данных предприятия. Выполнить такую работу вручную я бы и самому заклятому врагу не пожелал бы, а компьютер справляется с задачей печати адресов легко и красиво. После выбора режима СЛИЯНИЕ С Microsoft Word программа "спрашивает", с чем сливать - с имеющимся документом или создавать новый? И в соответствии с этим либо обратится к указанному документу, либо запустит Microsoft Word еще раз и откроет в нем новый чистый документ. В любом случае в текстовом редакторе будет активизирована инструментальная панель для работы с полями базы данных и установлена связь с конкретной таблицей базы данных. Вам останется только набрать текст постоянных надписей, вставить наименования полей (чтобы при распечатывании программа заменила их конкретным содержимым) - и все, можно печатать.
С экспортом, пожалуй, все. Как вы уже поняли, такой механизм позволяет добиться очень и очень многого, заставив компьютер выполнить всю черновую работу. Правда, для успешного решения этой задачи требуется немного практического опыта и, это самое главное, представление о том, как на самом деле "оно работает". Представляя, пусть даже в теории, основные этапы и алгоритмы и имея немного воображения, можно создавать шедевры автоматизации. В принципе, в идеале, становится возможным даже создать автоматизированную структуру, по заданному графику самостоятельно генерирующую, например, еженедельный отчет о деятельности отдела маркетинга или склада готовой продукции. В Microsoft Word создается стандартная "рыба" со всеми необходимыми постоянными надписями. Посредством механизма слияния в заданные места вставляются конкретные поля, которые программа заменит на их фактическое содержание. В Microsoft Access пишется макрос, выполняющий такую вставку в готовый текстовый документ. Все, работа закончена. Вам останется только подчистить сущие мелочи и отправить результат на печать.
Александр Запольскис
Компьютерная газета. Статья была опубликована в номере 16 за 1999 год в рубрике soft :: субд