Получение данных с помощью запросов
Работа с таблицей запроса
Таблицы запросов не только напоминают обычные таблицы, но и обладают схожими функциями. Все комбинации клавиш, указанные в главе 5, "Создание первых таблиц", также применимы для работы с запросами. Более того, таблицы запросов можно редактировать, как и таблицы базы данных. Вот как это делается.
- Дважды щелкните на запросе ИменаРастений в окне Растения: база данных, и он будет открыт в режиме таблицы.
- Щелкните на ячейке столбца Имя, где хранится значение Тысячелистник.
- Измените это значение на Тысячелистник1 (рис. 7.7). Обратите внимание на небольшой значок в виде ручки, который появился слева от строки. Значок указывает на то, что произведенные изменения еще не были сохранены.
Рис. 7.7. Редактирование данных в таблице запроса - Щелкните на любой другой строке в таблице для сохранения изменений.
- Закройте таблицу.
- Выберите ссылку Таблицы в окне Растения: база данных.
- Щелкните правой кнопкой мыши на ссылке Таблицы и выберите команду Открыть. Как видите, название растения поменялось, хотя использовалась таблица запроса.
- Щелкните на имени Тысячелистник1 и измените его снова на имя Тысячелистник.
- Закройте окно таблицы.
Для эффективного хранения данных рекомендуем использовать таблицы, а для представления данных наиболее удобным образом создавать запросы.
Если у вас и были сомнения относительно возможности редактирования данных таблицы с использованием запросов, то теперь они должны полностью рассеяться.
А что если запрос содержит данные из двух разных таблиц? Данные все равно доступны для изменения, однако результаты порой бывают непредсказуемыми. Проиллюстрируем сказанное на таком примере.
- Щелкните на ссылке запроса Растения/Типы в окне Растения: база данных. Затем щелкните на кнопке Открыть, расположенной на панели инструментов.
- Щелкните на ячейке, содержащей текст Тунбергия, и измените его на НеТунбергия.
- Дважды нажмите клавишу Таb для перехода к последнему столбцу первой строки таблицы, в котором содержится значение Декоративное.
- Введите значение Орнаментальное.
- Еще раз нажмите клавишу Таb. Таблица теперь будет иметь вид, аналогичный показанному на рис. 7.8. Обратите внимание, что поле Декоративное везде заменено полем Орнаментальное.
- Вернитесь в предыдущую строку, чтобы отменить произведенные изменения и вернуть бывшие значения полей.
Рис. 7.8. Редактирование данных в таблице запросов, основанной на двух таблицах
Результат, полученный при выполнении п. 5, наверняка вас удивил. Однако если задуматься о принципе работы запросов, загадка перестанет быть таковой. Запрос выбирает данные, как из таблицы Растения, так и из таблицы Типы, поэтому каждая строка запроса соответствует одной строке таблицы Растения. Названия полей Имя и ЛатинскоеИмя получены именно из таблицы Растения.
Но как насчет поля Описание, которое расположено в таблице Типы? Когда запрос выводит содержимое указанного поля, сначала используется значение Номер типа из таблицы Растения. С помощью этого значения запрос определяет строку таблицы Типы, которая должна соответствовать текущей строке таблицы Растения.
Итак, хотя поле Декоративное встречается в оригинальной таблице четыре раза, оно сохранено в базе данных лишь один раз. Запрос просматривает значения для каждой строки и, следовательно, отображает его все четыре раза.
А что же происходит при изменении значения? Запрос "знает" о том, какая строка в таблице Типы используется для получения исходного значения, и обновляет эту строку в таблице. Однако затем обрабатываются все другие строки, и значение обновляется везде, где встречается в строках. В следствие этого изменение одной строки данных влияет на другие строки запроса, в котором отображаются данные различных таблиц. Эта функция Access, называемая строковой привязкой, предотвращает отображение в запросе данных, которые отсутствуют в таблицах.