Невизуальная работа в СУБД Microsoft Access 2010. Часть 2

(Работа представлена на конкурс к десятилетию портала «Компьютерные технологии для незрячих и слабовидящих».)
Дата публикации:30.09.2014
Поделиться в Twitter Поделиться в F******k Поделиться в VKontakte Поделиться в Telegram Поделиться в Mastodon

Во второй части руководства представлен обзор некоторых инструментов Access . Рассмотренные возможности служат для управления данными. Создание, добавление, удаление и изменение данных в объектах базы данных Access.

Оглавление

1. Подчинённые формы

Подчинённой формой называется форма, вставленная в основную форму. Такая форма удобна для просмотра, добавления или редактирования данных в таблицах с отношениями (связями) один ко-многим. Например, можно создать форму с подчинённой формой для отображении данных для таблиц "Группы" и "Ученики". Данные из таблицы "Группы" являются стороной "один", а данные из таблицы "Ученики" являются стороной "многие". Каждая группа содержит несколько учеников. В основной форме будут отображаться данные на стороне "один", в подчинённой форме отображаются данные на стороне "многие". С помощью такой формы удобно просматривать, добавлять, редактировать данные по конкретной группе учеников. Иначе говоря, в подчинённой форме отображаются данные соответствующие текущей записи в основной форме. Например, если текущей записью является группа учеников номер два, то в подчинённой форме отображаются имена и фамилии учащихся только из этой группы.

1.1. Создание формы с подчинённой формой

Примечание. При создании таких форм убедитесь, что ключевое поле таблицы, форма которой будет подчинённая, имеет тип данных "счётчик". В случае, если у этой таблицы ключевое поле имеет тип "числовой", то ключевое поле необходимо добавить в форму для заполнения. Так как ключевое поле не должно быть пустым.

Такую форму удобней всего создавать с помощью Мастера форм. Для этого выполните команду ленточного меню "Создание вкладка/Мастер форм". На первом шаге из раскрывающегося списка выберем таблицу "Группы" и добавим необходимые поля этой таблицы в форму. Далее, на этом же шаге мастера, из раскрывающегося списка "Таблицы или запросы" выберем таблицу "Ученики" и добавим необходимые поля.

Примечание: порядок выбора таблиц не имеет значения.

На втором шаге мастера, при условии, что отношения таблиц выполнено правильно (о связях таблиц см. первую часть), должен появиться диалог "Выберите вид представления данных". Если мастер выдал вам такое сообщение, то выполните следующие действия: переключитесь на JAWS-курсор, в окне диалога найдите таблицу на стороне "один". И двойным щелчком левой кнопкой мыши отметьте эту таблицу. В нашем примере это таблица "Группы". Внизу страницы мастера щелкните двойным нажатием левой кнопки мыши по радиокнопки "Подчинённые формы" и нажмите клавишу Enter. На следующем шаге мастера выберите "Макет форм" и нажмите "Далее". На последнем шаге создания форм дайте им заголовки. В формате главная (основная) и подчинённая, и нажмите кнопку "Готово".

1.2. Работа с основной и подчинённой формой

При добавлении основной формы с подчинённой в Области переходов создаются два объекта: подчинённая форма и основная форма. Для работы необходимо открывать основную форму, (которая содержит в себе две формы).

Навигация в основной и подчинённой формах

Для навигации в формах используется клавиша Tab и комбинация клавиш Shift+Tab, по записям в основной и подчинённой формах. Если курсор находится в последнем поле основной формы, то нажатие клавиши Tabпереведёт курсор на первое поле в подчинённой форме. Если курсор находится на последнем поле подчинённой формы, нажатие клавиши Tab переведёт курсор на следующую или новую пустую запись подчинённой формы. Для быстрой навигации по записям форм можно применять диалог "Переходов", который открывается по комбинации клавиш Alt+F5. Для быстрого перемещения с одной записи основной формы на следующую запись можно воспользоваться следующими действиями:

  • Находясь на записи основной формы, нажмите сочетание клавиш Shift+Пробел.
  • Нажмите клавишу Tab, тем самым курсор перейдёт на следующую запись основной формы, в её первое поле.
  • Снова нажмите комбинацию клавиш Shift+Пробел.

Или, находясь на записи основной формы, вызовите диалог "Переходов" и нажмите кнопку "Следующая запись".

1.3. Заполнение таблиц с помощью основной и подчинённой форм

При открытии пустой главной формы курсор будет находиться в первом поле основной формы. В нашем примере это поле "Номер группы". Заполнив это поле, клавишей Tab перейдём в следующее поле. В нашем примере это поле "Профессия". Заполнив это поле и нажав клавишу Tab, переместим курсор в подчинённую форму, так как данное поле было последним в основной форме.

В нашем примере в подчинённой форме содержатся данные по ученикам, т. е. Фамилия и имя. Заполнив данные по первому ученику и нажав клавишу Tab, переместим курсор на следующую пустую запись. Таким образом, перейдя на подчинённую форму, можно заполнять данные по внесенной записи основной формы в необходимом количестве. В нашем примере можно занести любое количество учеников, обучающихся в первой группе. Для того чтобы выйти из подчинённой формы в основную форму для добавления в неё записи, воспользуйтесь следующими действиями:

Комбинацией клавиш Ctrl+Tab или Ctrl+Shift+Tab перейти на запись основной формы.

Комбинацией клавиш Alt+F5открыть диалог "Переходов". В открывшимся диалоге выберите кнопку "Новая пустая запись". Курсор перейдёт в первое пустое поле. В нашем примере это поле "Номер группы".

С помощью диалога "Переходы" можно быстро перемещаться по записям как в основной форме, так и в подчинённой форме.

2. Подтаблицы

Подтаблица - это таблица, которая встроена в основную таблицу. Подтаблицы можно добавлять в основную таблицу.

В приложении Microsoft Access подтаблица создаётся автоматически при создании таблицы, удовлетворяющей одному из следующих критериев:

  • таблица участвует в отношении "один к одному";
  • таблица представляет сторону "один" в отношении "один ко многим".

Например, есть две таблицы "ФИО" и "Данные", с которыми мы работали в первой части руководства. Эти таблицы имеют связь один к-одному.

Таблица "ФИО" содержит записи с полями "Фамилия" и "Имя" пациентов, а таблица "Данные" содержит записи с данными этих пациентов. Открыв таблицу "ФИО" в режиме "Таблица", мы имеем возможность просмотреть данные по пациенту прямо из этой таблицы. Для этого необходимо воспользоваться комбинацией клавиш Ctrl+Shift+стрелка вниз.

  • Поместите курсор на запись интересующего пациента.
  • Нажмите сочетание клавиш Ctrl+Shift+стрелка вниз. В основной таблице раскроется запись с данными по интересующей записи основной таблице.
  • Комбинацией клавиш Ctrl+Shift+стрелка вверх закройте подтаблицу. Курсор перейдёт в основную таблицу.

Ещё один пример с подтаблицей - это таблицы со связью один ко-многим. Есть две таблицы "Ученики" и "Группы". В каждой группе учатся несколько учеников. Таблица "Группы" содержит в себе подтаблицу "Ученики". Тем самым, есть возможность просмотреть в таблице "Группы" учащихся по каждой группе, раскрыв в ней подтаблицу с учениками.

2.1. Вставка подтаблиц

Подтаблицы можно вставлять как в основную таблицу, так и в подтаблицу, тем самым можно просматривать данные по нескольким таблицам, открыв всего лишь одну таблицу. Например, есть три таблицы "ФИО", "Адреса" и "Телефоны". По умолчанию в этих таблицах нет подтаблиц, но есть возможность их туда вставить. Тогда можно будет открыть таблицу "ФИО", найти интересующую запись, раскрыв в ней подтаблицу "Адреса", посмотреть адрес интересующего человека. Тем временем в раскрытой подтаблице "Адреса" можно отобразить подтаблицу "Телефоны" и посмотреть нужный телефон.

Для вставки подтаблицы в основную таблицу выполните следующие действия. Откройте основную таблицу в режиме "Таблица". В нашем примере это будет таблица "ФИО". Выполните команду ленточного меню "Главная вкладка/Дополнительно кнопка с меню/Подтаблицы подменю/подтаблица". По вкладке "Главная" клавишей Tab необходимо переместиться до второй кнопки "Дополнительно" и раскрыть её клавишей [Пробел]. Далее клавишей Tab переместиться до подменю "Подтаблицы". Раскрыв это подменю нажать кнопку "Подтаблица".

Примечание. в этом же меню можно удалять подтаблицу, которая относится к открытой таблице или подтаблице. Для этого необходимо нажать кнопку "Удалить". Если в открытой таблице или подтаблице нет подтаблице, то кнопка "Удалить" будет недоступной.

После активации кнопки "Подтаблица откроется меню вставки подтаблицы.

В диалоговом окне "Вставка подтаблицы" откройте вкладку "Таблицы". Из списка таблиц выберите таблицу, которая будет в качестве подтаблицы. В поле "Подчиненные поля" выберите поле, которое требуется использовать в качестве внешнего ключа, или связанное поле, которое обеспечит данные для подтаблицы. В поле "Основные поля" выберите поле, которое требуется использовать в качестве первичного ключа, или связанное поле для главной таблицы. Нажмите кнопку "OK".

В нашем примере в качестве подтаблицы выбрана таблица "Адреса". В подчинённом поле и в основном поле выбраны ключевые поля "Код".

Для добавления подтаблицы в подтаблицу выполните следующие действия. Откройте основную таблицу (в нашем примере это таблица "ФИО"). Сочетанием клавиш Ctrl+Shift+стрелка вниз раскройте подтаблицу "Адреса". Выполните вышеописанные действия по добавлению подтаблицы "Телефоны".

Примечание. В каждой таблице или подтаблице может быть встроена только одна подтаблица.

3. Внешние данные

3.1. Импорт данных из другой базы данных

Для того чтобы импортировать объект из другой базы данных, необходимо выполнить команду ленточного меню "Внешние данные/ Access ". Откроется диалоговое окно открытие файла. В текстовой строке укажите путь до файла базы данных или нажмите кнопку "Обзор". После выбора файла откроется диалог импорта, в котором клавишей [Пробел] отметьте на вкладках нужные объекты и нажмите "Ok". Выбранные объекты импортируются в конечную базу данных. Если в конечной базе данных есть объект с таким же именем, как у импортированного объекта, то к имени импортированного объекта добавляется цифра 1, 2, и т.д.

Сохранение спецификации импорта

Для того чтобы при следующем импорте объектов произвести процедуру импорта без мастера, можно сохранить шаги импорта при завершении первой процедуры импорта. Для этого в появившимся окне диалога отметьте флаг "Сохранить шаги импорта".

В поле "Сохранить, как" введите имя спецификации импорта. При необходимости введите описание в поле "Описание". В этом же диалоге присутствует флажок "Создание задачи Outlook", который позволяет задать регулярное повторение процедуры. Если отметить этот флажок, откроется программа "Outlook". Используйте эту процедуру, чтобы завершить шаги операции.

Примечание. Если программа Outlook не установлена, будет выведено сообщение об ошибке. Если программа Outlook не настроена, откроется мастер запуска Outlook. Для настройки Outlook следуйте инструкциям мастера.

3.2. Создание связи с данными другой базы данных Access.

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

  • запросами;
  • формами;
  • отчётами;
  • макросами;
  • модулями.

При создании связи с таблицей базы данных Access автоматически создаётся новая таблица, называемая связанной, которая обеспечивает связь с исходными записями и полями. Любые изменения данных в исходной базе данных отражаются в связанной таблице конечной базы данных, и наоборот. Однако изменить структуру связанной таблицы в конечной базе данных нельзя. Другими словами, в связанной таблице невозможны такие изменения, как добавление или удаление полей или изменение типа данных поля. Для добавления или изменения таблиц в базе данных необходимо применять запросы на добавление или изменения.

Для того чтобы выполнить связь данных с другой базой данных, необходимо выполнить команду ленточного меню "Внешние данные/ Access ". В открывшимся диалоге, в текстовой строке "Имя файла", указать путь до файла или нажать кнопку "Обзор". В этом же окне отметить радиокнопку "Создать связанную таблицу для связи с источником данных". Нажать кнопку "Открыть". В следующем окне мастера клавишей [Пробел] отметить объекты, с которыми будет создаваться связь, и нажать кнопку "Ok". В результате в конечной базе данных будет создана связанная таблица. Если в конечной базе данных уже есть таблица с таким именем, то к имени связанной таблице будет добавлена цифра 1, 2, и т. д. иначе говоря, при создании связанной таблицы данные в конечной базе данных не перезаписываются и не заменяются.

3.3. Импорт данных из других источников

Иногда приходится работать с данными, которые находятся в других программах, например, в Excel. Тогда их можно импортировать в Access. Этот способ работает лучше всего, если данные уже разделены на столбцы, как это сделано в таблице Excel. Если данные введены в текстовом редакторе, необходимо сначала разделить их на столбцы с помощью знаков табуляции либо преобразовать в таблицу в текстовом редакторе.

Для импорта данных, которые находятся в другой программе, необходимо выполнить команду ленточного меню "Внешние данные", и выбрать команду, соответствующую типу файла, из которого импортируются данные. Например, для импорта данных из таблицы Excel нажмите кнопку "Excel". Если нужный тип программы отсутствует, необходимо нажать кнопку "Дополнительно".

Например, есть текстовый файл с данными, которые необходимо импортировать в базу данных.

3.3.1. Импорт данных из текстового файла

Перед импортом таких данных необходимо подготовить этот файл, т. е. разделить данные символом-разделителем, например, символом табуляции. Необходимо в первой строке текстового файла определить и указать названия полей будущей таблицы Access. Закрыть исходный файл.

Открыть конечную базу данных и выполнить команду ленточного меню "Внешние данные/текстовый файл". Откроется диалоговое окно, в котором необходимо указать путь до файла, прописав его в текстовой строке, либо нажав кнопку "Обзор". В этом же диалоге необходимо отметить радиокнопку "Импортировать данные источника в новую таблицу в текущей базе данных". Нажать кнопку "Ok". Откроется следующий диалог, в котором необходимо отметить радиокнопку, указывающую формат данных в исходном файле, т. е. применены ли разделители или фиксированная ширина полей. Выбираем радиокнопку "С разделителями - поля разделяются запятыми или табуляцией". Нажимаем на выбранной радиокнопке клавишу Enter. На следующем шаге необходимо выбрать радиокнопку, указывающую на тип разделителя. В нашем случае данные в текстовом файле разделены символом табуляции. Выбираем соответствующую радиокнопку. Если необходимо данные первой строки сделать заголовками полей в будущей таблице Access, то в этом же окне отметьте соответствующий флажок. Чтобы перейти на следующий шаг, переместите курсор на выбранную радиокнопку и нажмите клавишу Enter. Или переключитесь на JAWS-курсор, и внизу страницы нажмите кнопку "Далее". Откроется следующий шаг импорта, на котором имеется возможность задать сведения о каждом поле импорта. Для этого переключитесь на JAWS-курсор. Двойным щелчком левой кнопкой мыши выберите поле в нижней части окна. Если необходимо, то измените сведения в области "Описание поля". На этом шаге можно пропустить импорт выбранного поля, для этого отметьте соответствующий флажок. Нажмите кнопку "Далее", чтобы перейти на следующий шаг мастера импорта. На этом шаге дайте имя таблице и нажмите кнопку "Готово". По умолчанию таблице с импортированными данными будет присвоено имя исходного файла. При импорте данных из другого источника в таблицу Access в созданной таблице, кроме полей с импортированными данными, автоматически создаётся поле "Код", которое по умолчанию является ключевым.

3.3.2. Импорт данных из приложения "excel"

Перед непосредственным импортом данных из книги Excel данные надо подготовить к импорту. Для этого выполните следующие действия. Определите будущие заголовки полей таблицы, т. е. впишите в нужные ячейки листа или диапазона нужные значения.

Если предполагается импортировать определённый диапазон данных, то этому диапазону необходимо дать имя. Для именования диапазона выполните следующие действия:

  • Выделите нужный диапазон с данными.
  • Вызовите контекстное меню, и выполните пункт "Присвоить имя".

Примечание. Диапазоном ячеек может быть группа ячеек или одна ячейка.

Закройте исходный файл. Откройте конечную базу данных. Для того чтобы импортировать данные из этого приложения, необходимо выполнить команду ленточного меню "Внешние данные/Excel". Откроется первое диалоговое окно мастера, в котором необходимо указать путь до файла и отметить радиокнопку "Импортировать данные источника в новую таблицу в текущей базе данных". Нажать кнопку "Ok". Следующий шаг в мастере предоставляет возможность выбрать объект из книги Excel, который надо импортировать. Есть возможность импортировать лист Excel или именованный диапазон. Выберите соответствующую радиокнопку. Например, необходимо импортировать "Лист1", тогда выбираем радиокнопку "листы" и в списке листов выбираем "Лист1". Если отметить радиокнопку "Именованные диапазоны", то в следующем списке необходимо выбрать имя диапазона. Для перехода на следующий шаг нажимаем клавишу Enter или переключаемся на JAWS-курсор и нажимаем кнопку "Далее".

На следующем шаге, если это необходимо, отмечаем флаг "Использования данных из первой строки в качестве имён полей таблицы", и нажимаем клавишу Enter. Откроется следующий шаг мастера, В котором имеется возможность задать сведения о каждом поле импорта. Для этого переключитесь на JAWS-курсор. Двойным щелчком левой кнопки мыши выберите поле в нижней части окна. Если необходимо, то измените сведения в области "Описание поля". На этом шаге можно пропустить импорт выбранного поля, для этого отметьте соответствующий флажок. Нажмите клавишу Enter, чтобы перейти на следующий шаг мастера.

Следующий шаг мастера - управление ключевым полем будущей таблицы Access. Выберите радиокнопку "Автоматически создать ключ", Access сам создаст ключ из первого поля таблицы. Чтобы определить ключ в ручную, выберите радиокнопку "Определить ключ". Если же ни одно поле будущей таблицы не подходит для выбора в качестве ключевого, отметьте радиокнопку "Не создавать ключ". Первичный ключ можно будет создать в созданной таблице в режиме "Конструктор", добавив новую строку с именем "Код". Нажмите клавишу Enter, чтобы перейти на следующий шаг мастера, в котором можно ввести имя таблицы. Нажмите кнопку "Готово" для завершения процедуры импорта.

3.4. Связывание данных из других источников

Связывание позволяет использовать данные из файла другой программы, не импортируя их. В этом случае можно просматривать обновлённые данные как в исходной программе, так и в самой таблице Access. При этом не требуется создавать и обновлять копию данных в Access. При связывании с файлом в Access создаётся новая таблица, которая связывается с исходным файлом. Все изменения, вносимые в исходный файл, отражаются в связанной таблице. При этом изменение данных таблицы в Access не доступно. Если необходимо внести изменения в содержимое или структуру файла, следует открыть исходный файл и изменить его. Процедура связывания данных из других источников с базой данных похожа на процедуру импорта, но есть кое какие отличия. Для того чтобы выполнить эту процедуру, выполните команду ленточного меню "Внешние данные вкладка" и выберите тип нужного файла. В открывшемся диалоге мастера укажите путь до файла и отметьте радиокнопку "Создать связанную таблицу для связи с источником данных". Далее следуйте командам мастера. При связывании данных с другим источником нельзя выбирать ключевое поле, так как в связанной таблице поле "Код" будет отсутствовать. Если в базе данных уже есть одна или несколько таблиц, то в диалоге на первом шаге мастера становится доступной радиокнопка "Добавить копию записей в конец таблицы". Выберите её, если необходимо добавить какие-то данные в конец существующей таблицы. При выбранной радиокнопки "Добавить копию записей в конец таблицы" в этом же диалоге появляется список доступных таблиц. Выберите таблицу, в которую будут добавляться данные. Укажите путь до исходного файла, нажмите кнопку "OK", далее следуйте командам мастера. При добавлении данных в конец таблицы Access нужно помнить о том, что нельзя таким образом добавлять данные в связанную таблицу. Для добавления данных в связанные таблицы используйте исходный файл или запрос на добавления. Примечание. При добавлении данных в связанные таблицы добавленные данные так же добавляются в источник связанных таблиц.

4. Условия отбора

Для облегчения работы в запросах Access можно использовать условия отбора. Условия отбора - это выражения или определённые условия, которые прописываются в строках "Условия отбора", "или" и в последующих строках после строки "или". Условия отбора можно применять ко всем типам данных. Ниже представлена таблица примеров с некоторыми условиями отбора:

Условие отбораПрименение
ИвановОтбирает все фамилии Иванов в поле фамилия
А*Начинаются с заданной строки символов, например "А"
А*Слово заканчивается на любой символ
* < =Символы, использующиеся для указания числовых полей, например >25 и <50
NotНе соответствуют определённому значению, например, Иванов
20 or 25Содержат одно из двух значений, например 20 или 25
"" или nullМеняет записи на пустое значение

Более подробно с типами условия отбора, применяющихся к записям, можно ознакомиться на странице официальной документации.

5. Запросы действия

Запросы-действия позволяют изменять данные в таблицах: удалять, обновлять, добавлять записи. К этой группе запросов относятся следующие запросы:

  • Запросы на добавление записей. Позволяют добавлять в таблицу записи, создаваемые запросом.
  • Запросы на создание таблицы. Создают таблицы на основании данных, содержащихся в результирующем множестве запроса.
  • Запросы на обновление. Изменяют значения существующих полей в соответствии с заданным условием.
  • Запросы на удаление. Удаляют записи из одной или нескольких таблиц одновременно.

Создание и выполнение любого запроса-действия в СУБД Microsoft Access всегда состоит из двух этапов. Сначала необходимо создать запрос на выборку,

а потом превратить его в запрос-действие и выполнить ещё раз. Просмотрев результаты выборки, пользователь может убедиться в том, что всё пройдёт, как задумано, и только после этого давать команду на выполнение запроса. Перед тем, как выполнять запросы-действия, необходимо соблюсти ещё некоторые предосторожности.

1. сохранить резервную копию базы данных. Для этого выполните следующие действия:

  • откройте вкладку "Файл".
  • В открывшемся вертикальном меню на элементе "Сохранить и опубликовать" клавишей Tab перейти на вкладку "Сохранить как".
  • В вертикальном списке типов файлов, в группе "Дополнительно" выбрать элемент "Резервная копия".
  • Нажать "Сохранить как". Откроется обычный диалог "Сохранить как", где к имени файла будет добавлена запись о дате сохранения.

2. перед созданием запроса-действия, можно сделать копию таблицы, с которой придется работать. Для этого в области переходов поместите курсор на эту таблицу. Стандартным сочетанием клавиш скопируйте таблицу. Затем вставьте её в область переходов. Access выдаст сообщение о добавлении таблицы. К имени таблицы будет добавлено слово "Копия".

При работе с запросом-действия, будет полезно и в некоторых задачах необходимо использовать инструмент "Условия отбора".

5.1. Запросы на добавление

Запрос на добавление нужен в тех случаях, когда надо перенести данные из одной таблицы в другую или из таблицы из другой базы данных, чтобы не копировать их в ручную. Запрос такого типа создаётся в несколько этапов:

  • Создание запроса на выборку.
  • Преобразование запроса на выборку в запрос на добавление.

Рассмотрим запрос на добавление в одной базе данных. Предположим, что есть две таблицы "Ученики" и "Сотрудники". Необходимо перенести данные из таблицы "Ученики" в таблицу "сотрудники". Для этого выполним следующие действия.

Создаём запрос на выборку по таблице "Ученики".

Преобразовываем запрос на выборку в запрос на добавление. Для этого необходимо созданный запрос открыть в режиме "Конструктор". В ленточном меню во вкладке "Конструктор" выполняем пункт "добавление". Откроется диалог, в котором необходимо выбрать целевую таблицу, в которую будут копироваться данные. В этом же диалоге есть две радиокнопки, по умолчанию выбрана радиокнопка "Добавление записей в текущей базе данных". Если необходимо добавить данные в другую базу данных, то выберите соответствующую радиокнопку "Добавление записей в другую базу данных". Нажмите кнопку "Ok". Откроется бланк запроса на добавление. В этом бланке можно найти и просмотреть строку добавления, в которой отображаются целевые поля. Отображение целевых полей зависит от первого этапа создания запроса, т. е. от того, как был создан запрос на выборку. Если в запросе на выборку указать все поля таблицы, по которой будет создаваться запрос, например, в формате ученики. * (Звездочка), то и в строке добавления отображение будет аналогичным, т.е. Сотрудники. * (Звездочка). Если добавить отдельные поля к запросу, названия которых в исходной и конечной таблицах совпадают, Access автоматически добавляет совпадающие целевые поля в строку "Добавить к" в запросе. Если какие-либо имена в исходной и целевой таблицах не совпадают, Access добавляет совпадающие поля и оставляет отличающиеся поля пустыми.

Примечание. Если целевое поле оставлено пустым, запрос не добавит данных к этому полю. Перед выполнением запроса просмотрите результат, для этого комбинацией клавиш Ctrl+ русская точка переключитесь в режим "Таблица". Для выполнения запроса переключитесь в режим "Конструктор" и на вкладке "Конструктор" нажмите кнопку "Выполнить". Access выдаст предупреждающее сообщение, что в таблицу будет добавлено x записей. Нажмите "Да" для продолжения. Если после нажатия кнопки "Выполнить ничего не происходит, переключитесь на JAWS-курсор. Вверху страницы посмотрите, не появилось ли сообщение Access, что активное содержимое отключено. Если это сообщение появилось, то двойным щелчком мыши щёлкните по надписи "Включить активное содержимое". После включения активного содержимого повторите выполнение запроса.

5.2. Запрос на создание таблицы

Если необходимо создать таблицу на основе данных по уже созданным таблицам, то это можно сделать с помощью запроса. Запрос на создание таблицы проходит в два этапа:

  • Создание запроса на выборку.
  • Преобразование запроса на создание таблицы.

Если запрос на выборку уже создан, откройте этот запрос в режиме "Конструктор". Преобразуйте этот запрос в запрос на создание таблицы. Для этого на вкладке "Конструктор" нажмите кнопку "Создание таблицы". Откроется диалог, в котором необходимо указать имя новой таблицы. С помощью выбора радиокнопок укажите, где будет сохранена новая таблица:

  • В текущей базе данных.
  • В другой базе данных.

Нажмите кнопку "Ok". Откроется бланк запроса. Перед выполнением действий откройте запрос в режиме "Таблица" и просмотрите результат. Если результат устраивает, то переключите запрос в режим "Конструктор" и нажмите на вкладке "Конструктор" кнопку "Выполнить". Access выдаст сообщение о количестве записей, помещаемых в новую таблицу. Если в базе данных, в которую будет помещаться таблица, есть таблица с таким же именем, то Access выдаст предупреждающее сообщение, что существующая таблица будет удалена перед выполнением запроса. Если после нажатия кнопки "Выполнить ни чего не происходит, переключитесь на JAWS-курсор. Вверху страницы посмотрите, не появилось ли сообщение Access, что активное содержимое отключено. Если это сообщение появилось, то двойным щелчком мыши щелкните по надписи, "Включить активное содержимое". После включения активного содержимого повторите выполнение запроса.

5.3. Запрос на обновление

В некоторых случаях необходимо обновить записи в имеющихся таблицах. Если этих записей мало, то их можно обновить в ручную, а если записей, которые необходимо обновить, много, тогда эти записи можно обновить с помощью запроса на обновление.

С помощью запроса на обновление можно добавлять, изменять или удалять данные в одной или нескольких записях. Запросы на обновление можно рассматривать как разновидность диалогового окна "Поиск и замена" с более широкими возможностями. Следует ввести условие отбора (приблизительный аналог образца поиска) и условие обновления (приблизительный аналог образца замены). Где условие отбора (приблизительный аналог образца поиска) - запрос на выборку, а условие обновления (приблизительный аналог образца замены) - строка обновления, которая появляется в запросе на обновление.

В отличие от диалогового окна "Поиск и замена", запрос на обновление может принимать несколько условий и позволяет обновить большое число записей за один раз, а также изменить записи сразу в нескольких таблицах.

Процесс обновления записей в таблицах или в таблице, проходит в два этапа:

  1. Создание запроса на выборку.
  2. Преобразование запроса на выборку в запрос на обновление.

Создайте запрос на выборку по тем таблицам, в которых необходимо обновить данные. Комбинацией клавиш Ctrl+русская точка Переключите запрос в режим "Таблица", чтобы убедиться, что запрос возвратил необходимые данные. Откройте созданный запрос в режиме "Конструктор". Выполните команду ленточного меню "Конструктор вкладка/Обновление". В бланке запроса появится строка "Обновление". Переместиться в ту строку можно клавишей со стрелкой вниз. Поместите курсор в то поле, в котором необходимо обновить записи, спуститесь в строку "Обновление" и впишите значение (выражение) для обновления.

Например, необходимо для поля "Статус" изменить значение "Ученик" на значение "Выпускник". Впишите значение "Выпускник" в поле "Обновление", и выполните команду ленточного меню "Конструктор вкладка/Выполнить". Access выдаст предупреждающее сообщение, что будет заменено xxx записей. Нажмите кнопку "Да". Запрос откроется уже с обновлёнными записями. Таким же образом можно обновлять, например, поле с типом данных "логический", "нет" на "да" и наоборот.

5.3.1. Изменение записей в одной таблице на записи из другой таблицы

С помощью запроса на обновление можно заменять записи одной таблицы на запись другой таблицы.

Примечание. Для того чтобы заменить записи одной таблицы на записи другой, необходимо, чтобы эти таблицы были связанны между собой. Создание связей (отношений) см. часть первая.

Создаём запрос на выборку по этим таблицам.

В открывшемся бланке запроса указываем поля конечной таблицы. Т. е. той таблицы, в которой будут обновляться записи. Переключаем запрос в режим "Таблица", чтобы убедиться, что запрос возвратил необходимые данные. Переключаем запрос в режим "Конструктор". Преобразуем запрос на выборку в запрос на обновление. Выполняем команду ленточного меню "Конструктор вкладка/Обновление".

Откроется бланк запроса, в котором появится строка "Обновление". Перемещаем курсор в эту строку. В каждый столбец, содержащий конечное поле, добавляем имя исходной таблицы и поля исходной таблицы, соответствующее полю в конечной таблице, используя следующий синтаксис:

[Таблица]. [Поле]

Имена таблицы и поля заключаются в квадратные скобки и разделяются точкой. Затем на вкладке "Конструктор" нажмите кнопку "Выполнить". Access выдаст сообщение о том, что будет заменено xxx записей. Нажмите кнопку "Да" для выполнения обновления.

5.4. Запрос на удаление

  • Этот вид запросов служит для удаления группы записей базы данных, удовлетворяющих определённым условиям. Обычный запрос можно преобразовать в запрос на удаление с помощью команды "Запрос/Удаление" в режиме "Конструктор запросов". При этом в бланке запроса появится строка "Удаление", где можно ввести условие для удаления записей
  • В режиме Конструктора запроса необходимо указать таблицу, в которой будут проводиться удаления. Затем определить критерии, и обязательно просмотреть результаты выполнения запроса на выборку.

    Если в результате запроса присутствуют только подлежащие удалению записи, следует преобразовать его в запрос на удаление.

    Удаление записей может привести к непредсказуемым результатам, в том числе и к нарушению целостности базы данных, по следующим причинам: таблица является частью отношения "один-ко-многим" и в качестве условия обеспечения целостности данных использована опция "Каскадное удаление связанных полей".

    Например, вы решили исключить каких-то студентов и удалить соответствующие записи из таблицы "Студенты". При этом существует также таблица "Экзамены", которая связана с таблицей "Студенты", отношением один - ко многим. Если для обеспечения целостности данных выбрана опция "Каскадное удаление связанных полей", то в процессе удаления записей о студентах будут удалены записи об их оценках, то есть информация об успеваемости.

    Примечание. если установлена опция "Каскадное удаление связанных полей" и вы пытаетесь удалить записи в режиме просмотра таблицы, то получите предупреждение о возможном удалении данных в других таблицах. А при использовании запросов на удаление вы не увидите предупреждения. MS Access выдаст только информацию о количестве удаляемых записей, но ничего не скажет про каскадное удаление.

    Рассмотрим такой пример: есть три таблицы "ФИО", "Адреса", "телефоны". Из этих таблиц необходимо удалить записи связанные с фамилией Иванов и Иванова. Все эти таблицы связанны между собой. Для удаление этих данных сначала создадим запрос на выборку по таблице "ФИО". На вкладке "Конструктор" нажмём кнопку "Создать запрос в режиме конструктора". Добавим в бланк таблицу "ФИО". В бланке запроса укажем поле "Фамилия". Преобразуем запрос на выборку в запрос на удаление, для этого, на вкладке "конструктор" нажмём кнопку "Удаление". В бланке запроса в строке "Условие отбора" впишем: Иванов* (звездочка). Обратите внимание на синтаксис условия отбора. выражение записано в формате ИвановЗвёздочка. Звёздочка означает любой символ в конце слова. Тем самым запрос возвратит нам данные и по Иванову, и по Иванова. Переключимся в режим "Таблица", чтобы убедиться в том, что запрос возвратил нужные данные. Видим, что отобразились данные только по Иванову и по Ивановой, переключаемся в режим "Конструктор" и на вкладке конструктор жмём кнопку "Выполнить". Access выдаст диалог, что будет удалено x записей. Жмём кнопку "Да" для выполнения действия.

    Рассмотрим другой пример: в таблице "ФИО" есть несколько людей с одинаковыми фамилиями, но с разными именами. Необходимо из этой базы удалить данные для Иванов Пётр и Иванова Татьяна. В базе есть ещё записи по Иванову Сергей и Ивановой Людмилы. Для осуществления такого удаления необходимо:

    • 1. Создать запрос на выборку по таблице "ФИО".
    • 2. В бланке запроса указать следующие поля "Фамилия" и "Имя".
    • 3. В строке "Условия отбора" для поля "Фамилия" вписать Иванов* (звездочка)
    • 4. В строке "Условия отбора" для поля "Имя" вписать "Татьяна" и в строке "или" вписать "Пётр".
    • 5. Переключиться в режим "Таблица", чтобы убедиться, что запрос возвратил нужные данные.
    • 6. Переключить запрос в режим "Конструктор" и на вкладке "Конструктор" нажать кнопку "Удаление". Запрос преобразуется в запрос на удаление.
    • 7. На вкладке "Конструктор" нажать "Выполнить". Access предупредит о том, что будет удалено x записей. Нажать кнопку "Да", чтобы завершить действия.

    При таком удалении записи будут удалены во всех связанных таблицах, данные которых ссылаются на таблицу "ФИО". Иначе говоря, удалятся и адреса, и телефоны, которые относились к этим фамилиям.

    Рассмотрим удаление данных из таблицы на стороне многие. Есть две таблицы "Ученики" на стороне "многие" и "Группы" на стороне "один". Необходимо удалить записи с учениками, которые учатся в группе номер три. Соответственно необходимо выполнить запрос так, чтобы он возвратил данные именно по группе номер три. Для этого выполним следующие действия.

    В бланке запроса указываем таблицу, из которой будут удаляться данные (в нашем примере это таблица "Ученики"), в следующем формат:

    Ученики. * (Звездочка)
    

    Тем самым мы укажем программе, что данные будут удаляться именно из этой таблице.

    Во втором столбце бланка запроса укажем только имя поля из таблицы "Группы", в нашем случае это будет поле "Номер группы. В этом же столбце спускаемся до ячейки "Условие отбора" и прописываем там цифру 3. Тем самым мы указали, что это поле будет условием для удаления данных из таблицы "Ученики", и удаляться будут учащиеся в третей группе.

    На вкладке "Конструктор" нажимаем кнопку "Удаление", запрос преобразуется в запрос на удаление. В строке "Удаление" можно увидеть, что к столбцу таблицы "Ученики", в ячейки удаление выбран параметр "из", а в ячейки удаление для столбца "Номер группы" выбран параметр "условие". Переключаем запрос в режим "Таблица", чтобы убедиться, что запрос возвратил необходимые данные. Затем переключаем запрос в режим "Конструктор" и на вкладке "Конструктор" жмём "Выполнить". Access выдаст предупреждающее сообщение, что будет удалено x записей. Для подтверждения нажмите "Да".

    Примечание. При удалении данных из таблицы на стороне "многие" не будут удалены данные из таблицы на стороне "один". При удалении данных из таблицы на стороне "один" будут удалены данные и из таблицы на стороне "многие".

    Примечание. При удалении записей значение поля «Код» не пересчитывается. Другими словами, записи удаляются вместе со значением счетчика, и при дальнейшем добавлении записей в таблицу значение счетчика продолжает увеличиваться. Это связано с тем, что значение этого поля служит для связывания таблиц и является уникальным идентификатором записи в данной таблице. Если значение этого поля каждый раз пересчитывать, то будут нарушены связи с другими таблицами, которые используют это поле для сопоставления данных из связанных таблиц. Вас не должен вводить в заблуждение тип этого поля "счётчик", так как назначение этого поля выражается его названием "Код"!

    Внимание! Если нет большой необходимости сбрасывать значение счётчика , то лучше будет всё оставить как есть. В любом случае, к сбросу счётчика надо подходить аккуратно.

    Ниже приведён способ, как сбросить значения счетчика. Для этого можно воспользоваться запросом на создание таблицы. При этом нужно помнить, что связи в базе данных придётся обновлять. Задумайтесь об этом, если ваша таблица содержит много записей.

    Рассмотрим такой пример: есть две таблицы "Группы" и "Ученики". Из таблицы "Ученики" было удалено x записей и, соответственно, в поле "Код" отсутствуют некоторые значения (1; 3; 4;6). Чтобы сбросить счётчик, выполним следующие действия.

    • 1. Создадим запрос на выборку по таблице "Ученики", добавим в запрос все поля, кроме поля "Код".
    • 2. Преобразуем запрос в запрос на создание таблицы.
    • 3. В диалоге создания таблицы дадим ей имя "Ученики1".
    • 4. Выполним этот запрос. Access выдаст сообщение, что в новую таблицу будет добавлено x записей. Нажмём "Да".
    • 5. Откроем новую таблицу в режиме "Конструктор" и добавим поле "Код" с тем же типом данных, что и был в таблице "Ученики", т. е. тип "счётчик".
    • 6. Изменим имя таблицы "Ученики", например, на "Ученики2", а название вновь созданной таблицы изменим на "Ученики".
    • 7. Удалим старую таблицу, при этом получим предупреждение, что таблица имеет связи с другими таблицами. Всё же согласимся на удаление, нажав "Да".
    • 8. Так как предыдущая таблица "Ученики" имела связь (отношения один ко-многим) с таблицей "Группы", то необходимо обновить связь вновь созданной таблице. Для этого путём подстановки (см. часть первая) добавим поле "Код" из таблицы "Группы" в таблицу "Ученики".


    Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
    Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2024