Иллюстрированный самоучитель по Microsoft Access 2003

Получение данных с помощью запросов

Работа с таблицей запроса

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

  1. Дважды щелкните на запросе ИменаРастений в окне Растения: база данных, и он будет открыт в режиме таблицы.
  2. Щелкните на ячейке столбца Имя, где хранится значение Тысячелистник.
  3. Измените это значение на Тысячелистник1 (рис. 7.7). Обратите внимание на небольшой значок в виде ручки, который появился слева от строки. Значок указывает на то, что произведенные изменения еще не были сохранены.

    Иллюстрированный самоучитель по Microsoft Access 2003 › Получение данных с помощью запросов
    Рис. 7.7. Редактирование данных в таблице запроса

  4. Щелкните на любой другой строке в таблице для сохранения изменений.
  5. Закройте таблицу.
  6. Выберите ссылку Таблицы в окне Растения: база данных.
  7. Щелкните правой кнопкой мыши на ссылке Таблицы и выберите команду Открыть. Как видите, название растения поменялось, хотя использовалась таблица запроса.
  8. Щелкните на имени Тысячелистник1 и измените его снова на имя Тысячелистник.
  9. Закройте окно таблицы.

Для эффективного хранения данных рекомендуем использовать таблицы, а для представления данных наиболее удобным образом создавать запросы.

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

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

  1. Щелкните на ссылке запроса Растения/Типы в окне Растения: база данных. Затем щелкните на кнопке Открыть, расположенной на панели инструментов.
  2. Щелкните на ячейке, содержащей текст Тунбергия, и измените его на НеТунбергия.
  3. Дважды нажмите клавишу Таb для перехода к последнему столбцу первой строки таблицы, в котором содержится значение Декоративное.
  4. Введите значение Орнаментальное.
  5. Еще раз нажмите клавишу Таb. Таблица теперь будет иметь вид, аналогичный показанному на рис. 7.8. Обратите внимание, что поле Декоративное везде заменено полем Орнаментальное.
  6. Вернитесь в предыдущую строку, чтобы отменить произведенные изменения и вернуть бывшие значения полей.

Иллюстрированный самоучитель по Microsoft Access 2003 › Получение данных с помощью запросов
Рис. 7.8. Редактирование данных в таблице запросов, основанной на двух таблицах

Результат, полученный при выполнении п. 5, наверняка вас удивил. Однако если задуматься о принципе работы запросов, загадка перестанет быть таковой. Запрос выбирает данные, как из таблицы Растения, так и из таблицы Типы, поэтому каждая строка запроса соответствует одной строке таблицы Растения. Названия полей Имя и ЛатинскоеИмя получены именно из таблицы Растения.

Но как насчет поля Описание, которое расположено в таблице Типы? Когда запрос выводит содержимое указанного поля, сначала используется значение Номер типа из таблицы Растения. С помощью этого значения запрос определяет строку таблицы Типы, которая должна соответствовать текущей строке таблицы Растения.

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

А что же происходит при изменении значения? Запрос "знает" о том, какая строка в таблице Типы используется для получения исходного значения, и обновляет эту строку в таблице. Однако затем обрабатываются все другие строки, и значение обновляется везде, где встречается в строках. В следствие этого изменение одной строки данных влияет на другие строки запроса, в котором отображаются данные различных таблиц. Эта функция Access, называемая строковой привязкой, предотвращает отображение в запросе данных, которые отсутствуют в таблицах.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.