Вы находитесь на странице: 1из 22

СОДЕРЖАНИЕ

СОЗДАНИЕ ЗАПРОСА НА ДОБАВЛЕНИЕ ТАБЛИЦЫ...................................................2


СОЗДАНИЕ ЗАПРОСА НА УДАЛЕНИЕ ЗАПИСЕЙ ТАБЛИЦЫ....................................3
ДОБАВЛЕНИЕ ЗАПИСЕЙ В ТАБЛИЦУ С ПОМОЩЬЮ ЗАПРОСА НА
ДОБАВЛЕНИЕ........................................................................................................................4
Пример создания и выполнения запроса на добавление.................................................5
Этап 1. Создание запроса на выборку записей для копирования...............................5
Этап 2. Преобразование запроса на выборку в запрос на добавление.......................9
Этап 3. Выбор целевых полей........................................................................................9
Этап 4. Предварительный просмотр и выполнение запроса на добавление............10
СОЗДАНИЕ И ВЫПОЛНЕНИЕ ЗАПРОСА НА ОБНОВЛЕНИЕ....................................11
Ограничения обновления полей.......................................................................................11
Использование запроса на обновление...........................................................................12
Создание резервной копии базы данных.....................................................................12
Этап 1. Создание запроса на выборку для определения обновляемых записей......12
Этап 2. Обновление записей.........................................................................................15
Обновление данных в одной таблице данными из другой таблицы........................16
Таблица "Покупатели"..................................................................................................17
Таблица "Клиенты".......................................................................................................17
Ограничения преобразования типов данных..................................................................19
Выполнение запроса, заблокированного из-за режима отключения содержимого....23
Версия SQL: инструкция UPDATE..................................................................................23
Синтаксис.......................................................................................................................23
Замечания.......................................................................................................................23
СОЗДАНИЕ ЗАПРОСА НА ДОБАВЛЕНИЕ ТАБЛИЦЫ
1. Откройте запрос на выборку в Конструкторе или перейдите в Конструктор:
 если запрос открыт в режиме таблицы, щелкните правой кнопкой мыши вкладку
документа запроса и выберите пункт Конструктор.
 если запрос закрыт, щелкните его правой кнопкой мыши в области навигации и
выберите в контекстном меню пункт Конструктор.
2. На вкладке Конструктор в группе Тип запроса нажмите кнопку Создание
таблицы.

Откроется диалоговое окно Создание таблицы.

3. В поле Имя таблицы введите имя новой таблицы или щелкните стрелку вниз и
выберите имя существующей таблицы.
4. Выполните одно из указанных действий:
 Помещение новой таблицы в текущую базу данных
Выберите параметр Текущая база данных, если он еще не выбран, и нажмите
кнопку ОК.
Нажмите кнопку " " и нажмите кнопку "Да", чтобы подтвердить операцию.

 Помещение новой таблицы в другую базу данных

Щелкните элемент В другой базе данных. В поле Имя файла введите


расположение и имя файла другой базы данных.
ИЛИ
Нажмите кнопку Обзор, в новом диалоговом окне Создание таблицы укажите
расположение другой базы данных и нажмите кнопку ОК.
Нажмите кнопку ОК, чтобы закрыть первое диалоговое окно Создание таблицы.
Нажмите кнопку " " и нажмите кнопку "Да", чтобы подтвердить операцию.

Внимание: При замене существующей таблицы эта таблица сначала удаляется, при
этом запрашивается подтверждение удаления. Нажмите кнопку Да, а затем нажмите
кнопку Да еще раз, чтобы создать новую таблицу.
СОЗДАНИЕ ЗАПРОСА НА УДАЛЕНИЕ ЗАПИСЕЙ ТАБЛИЦЫ
Запрос на удаление (Delete Query) позволяет удалить записи из одной таблицы
или из нескольких взаимосвязанных таблиц, для связи с которыми установлен
параметр обеспечения целостности данных каскадное удаление связанных записей
(Cascade Delete Related Records).
В схему данных запроса включается таблица, из которой должны удаляться
записи, и связанные с ней таблицы, для полей которых требуется задать условия
отбора удаляемых записей.
Порядок создания запроса на удаление:
1. Создайте запрос на выборку в режиме Конструктора. Добавьте в схему данных запроса
таблицу, из которой удаляются записи (На рис. - Архив Студенты).
2. Перетащите нужные поля таблицы в область запроса.
3. Преобразуйте запрос на выборку в запрос на удаление, выбрав на вкладке ленты
Конструктор тип запроса Удаление.
4. После преобразования запроса в запрос на удаление Access в его бланке появляется
строка Удаление.

5. В строке Условия отбора можно написать условия отбора или текст, который будет
выводится в диалоговом окне запроса при его выполнении: [Фамилия].
Удалится студент Иванов.
Внимание: Удаленные записи невозможно восстановить.

ДОБАВЛЕНИЕ ЗАПИСЕЙ В ТАБЛИЦУ С ПОМОЩЬЮ ЗАПРОСА


НА ДОБАВЛЕНИЕ
Запрос на добавление предназначен для добавления новых записей в
существующую таблицу с использованием данных из других источников.
Если нужно изменить данные в существующем наборе записей, например
обновить значение поля, также можно использовать запрос на обновление.
Если вам нужно сделать новую таблицу на выборке или объединить две таблицы
в одну, можно воспользоваться запросом на таблицу.
Запрос на добавление обеспечивает выборку записей из одного или нескольких
источников данных и копирование выбранных записей в существующую таблицу.
Например, вы получили базу данных с таблицей потенциальных клиентов, а у
вас уже есть таблица с такими данными в существующей базе данных. Для того, чтобы
данные хранились в одной таблице, можно с помощью запроса на добавление
скопировать их из новой базы данных в существующую, а не вводить новые данные
вручную.
При помощи запроса для копирования данных, можно выполнять указанные
операции:
 Добавление нескольких записей одновременно. При копировании данных
вручную обычно приходится несколько раз копировать и вставлять записи.
Используя запрос, можно выбрать все нужные данные одновременно, а затем
скопировать их.
 Просмотр выбранных данных перед копированием. Можно просмотреть
выбранные данные в режиме таблицы и внести необходимые изменения перед их
копированием. Это особенно удобно, если запрос содержит условия или выражения
и вам необходимо несколько попыток для правильного выбора данных. Запрос на
добавление нельзя отменить. Если сделана ошибка, придется либо восстанавливать
базу данных с помощью резервной копии, либо исправлять ошибку вручную или с
помощью запроса на удаление.
 Уточнение выбора с помощью условий. Например, может потребоваться добавить
записи только для клиентов, живущих в конкретном городе.
 Добавление записей в целевую таблицу, в которой отсутствуют некоторые поля
из источников данных. Предположим, что в существующей таблице клиентов 11
полей, а в новой таблице, из которой требуется скопировать данные, - только девять
из них. Для копирования данных из девяти совпадающих полей можно использовать
запрос на добавление, а два несовпадающих поля можно оставить пустыми.
Основные этапы создания запроса на добавление:
 Создание запроса на выборку. Выберите данные, которые нужно скопировать. При
необходимости в запрос на выборку можно вносить изменения и выполнять его до тех
пор, пока не будут выбраны нужные данные для копирования.
 Преобразование запроса на выборку в запрос на добавление. Когда выборка будет
готова, изменить тип запроса для Добавление.
 Выбор целевых полей для каждого столбца в запросе на добавление. В некоторых
случаях Access выбирает целевые поля автоматически. Эти поля можно настроить или
при необходимости выбрать самостоятельно.
 Предварительный просмотр и выполнение запроса на добавление записей. Перед
добавлением записей можно переключиться в режим таблицы для предварительного
просмотра добавляемых записей.
Важно: Запрос на добавление нельзя отменить. Рекомендуется создать резервную
копию базы данных или целевой таблицы.

Пример создания и выполнения запроса на добавление


Этап 1. Создание запроса на выборку записей для копирования

1. Откройте базу данных с записями, которые нужно скопировать.


2. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
3. Дважды щелкните таблицы или запросы с записями, которые нужно скопировать, а
затем нажмите кнопку Закрыть.
Таблицы или запросы появляются в виде одного или нескольких окон в
конструкторе запросов. В каждом окне выводятся поля таблицы или запроса. На
рисунке показана таблица в окне конструктора запросов.

1 Таблица "Основные средства" в окне конструктора запросов

2 Бланк запроса

1. Дважды щелкните каждое поле, которое требуется добавить. Выбранные поля


появятся в строке Поле бланка запроса.
Типы данных полей исходной таблицы должны быть совместимы с типами
данных полей в конечной таблице.
Текстовые поля совместимы с большинством других типов полей.
Числовые поля совместимы только с числовыми полями.
Например, можно добавить числа в текстовое поле, но нельзя добавить в
числовое поле текст.
Можно использовать в качестве поля выражение (например, =Date() для
автоматического возврата текущей даты), а также настраивать данные выборки в
бланке с помощью выражений, содержащих поля таблицы или запроса.
Например, если в таблице-источнике есть поле с четырехзначным номером года,
а в таблице-источнике — регулярное поле даты и времени, можно выбрать только год
с помощью функции DatePart.
Для быстрого добавления всех полей в таблицы в запрос, дважды щелкните
звездочку (*) в верхней части списка полей таблицы.
На рисунке показан бланк со всеми добавленными полями.

Звездочка

В поле запроса
перенесены все поля
таблицы

2. При необходимости можно ввести одно или несколько условий в строке Условие
отбора бланка. В таблице представлены некоторые примеры условий и результаты их
применения.
Условия отбора Результат
> 234 Возвращает все числа больше 234. Чтобы найти все числа меньше 234, используйте условие < 234.
>= "Владивосток" Возвращает все записи от "Владивосток" до конца алфавита.
Between #02.02.2017# And Выбирает даты между 2-фев-17 и 1-дек-17 (ANSI-89). Если в базе данных применяется набор подстановочных знаков ANSI-92,
#01.12.2017# используйте вместо знака решетки одинарные кавычки ('). Пример: Between '02.02.2017' And '01.12.2017'.
Not "Германия" Находит все записи, в которых содержимое поля не соответствует значению "Германия". Согласно этому условию будут найдены
записи, содержащие дополнительный текст, кроме слова "Германия", например "Германия (евро)" или "Европа (Германия)".
Not "Т*" Находит все записи, кроме тех, которые начинаются с буквы "Т". Если в базе данных применяется набор подстановочных знаков
ANSI-92, используйте знак процента (%) вместо знака звездочки (*).
Not "*т" Находит все записи, которые не оканчиваются на букву "т". Если в базе данных применяется набор подстановочных знаков ANSI-
92, используйте вместо звездочки (*) знак процента (%).
In(Канада,Великобритания) Находит все записи в списке со словами "Канада" или "Великобритания".
Like "[А-Г]*" Находит в поле с типом данных "Текстовый" все записи, начинающиеся с букв "А-Г". Если в базе данных применяется набор
подстановочных знаков ANSI-92, используйте вместо звездочки (*) знак процента (%).
Like "*ар*" Находит все записи, которые содержат сочетание букв "ар". Если в базе данных применяется набор подстановочных знаков ANSI-
92, используйте вместо звездочки (*) знак процента (%).
Like "Григорий Верны?" Находит все записи, начинающиеся с имени "Григорий" и содержащие вторую строку из 9 букв, из которых 6 букв составляют
начало фамилии "Верный", а последняя буква неизвестна (на это указывает вопросительный знак). Если в базе данных применяется
набор подстановочных знаков ANSI-92, используйте вместо вопросительного знака (?) знак подчеркивания (_).
#2/2/2017# Находит все записи за 2 февраля 2017 г. Если в базе данных применяется набор подстановочных знаков ANSI-92, используйте
вместо знака решетки (#) одинарные кавычки. Например: '02.02.2017'.
< Date() - 30 Возвращает все даты, которые более чем на 30 дней раньше текущей даты.
Date() Возвращает все записи, содержащие текущую дату.
Between Date( ) And DateAdd("M", 3, Возвращает все записи с датой, которая находится между текущей датой и датой, которая на 3 месяца позже текущей.
Date( ))
Is Null Возвращает все записи, содержащие пустое (незаполненное или неопределенное) значение.
Is Not Null Возвращает все записи, содержащие непустое значение.
"" Возвращает все записи, содержащие строку нулевой длины. Такие строки обычно используются, когда поле обязательно должно
иметь значение, но это значение еще неизвестно. Например, поле может содержать номер факса, но некоторые заказчики могут не
иметь устройств факсимильной связи. В этом случае вместо номера факса можно ввести пару двойных кавычек без пробела между
ними ("").
3. На вкладке "Конструктор" в группе "Результаты" нажмите кнопку "Выполнить
".
4. Убедитесь, что запрос возвратил записи, которые нужно скопировать. Если
необходимо добавить или удалить поля из запроса, переключитесь обратно в режим
конструктора и добавьте их, как указано в описании предыдущего этапа, или выберите
ненужные поля и нажмите клавишу DELETE, чтобы удалить их из запроса.
Этап 2. Преобразование запроса на выборку в запрос на добавление

1. На вкладке Главная открыть запрос в режиме Режим конструктора.


2. На вкладке Конструктор в группе Тип запроса выберите команду Добавление.

Откроется диалоговое окно Добавление.

3. Укажите, куда следует добавить записи: в таблицу текущей базы данных или в
таблицу какой-либо другой базы данных.

Выполните одно из указанных действий.

 В диалоговом окне Добавление установите переключатель в текущей базе данных,


выберите целевую таблицу в поле со списком Имя таблицы и нажмите кнопку ОК.

-или-

 В диалоговом окне Добавление установите переключатель в другой базе данных.


 В поле Имя файла введите расположение и имя целевой базы данных.
 В поле со списком Имя таблицы введите имя целевой таблицы и нажмите кнопку ОК.

Этап 3. Выбор целевых полей

Способ выбора целевых полей зависит от того, как был создан запрос на
выборку на этапе 1.

Действие пользователя Действие Access


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

Если Access оставляет поля пустыми, можно щелкнуть ячейку в строке


Добавить к и выбрать целевое поле.

На приведенном рисунке показано, как щелкнуть ячейку в строке Добавление


записей в таблицу и выбрать конечное поле.

Примечание: Если целевое поле оставлено пустым, запрос не добавит данных к этому
полю.

Этап 4. Предварительный просмотр и выполнение запроса на добавление

1. Для предварительного просмотра внесенных изменений переключитесь в режим


таблицы.

Совет: Для быстрого переключения режимов щелкните правой кнопкой мыши


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

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


СОЗДАНИЕ И ВЫПОЛНЕНИЕ ЗАПРОСА НА ОБНОВЛЕНИЕ
С помощью запроса на обновление в базах данных Access можно добавлять,
изменять и удалять данные в существующих записях – вкладка Конструктор, группа
команд Тип запроса - Обновления.

Запросы на обновление можно рассматривать как разновидность диалогового


окна Поиск и замена с более широкими возможностями. Запрос на обновление нельзя
использовать для добавления новых записей в базу данных или их удаления из нее.

Как и в диалоговом окне Поиск и замена, в запросе на обновление можно указать


значение, которое требуется заменить, а также новое значение.

В отличие от функции Поиск и замена запрос на обновление позволяет:

 использовать условия, которые не зависят от заменяемого значения;


 обновлять несколько записей за раз;
 изменять записи в нескольких таблицах одновременно.

Ограничения обновления полей


Запрос на обновление нельзя использовать для обновления данных в полях
указанных типов.

 Вычисляемые поля. Значения вычисляемых полей не хранятся в таблице постоянно.


После вычисления они существуют только во временной памяти компьютера.
Поскольку для вычисляемых полей не предусмотрено место постоянного хранения, их
невозможно обновить.
 Поля итогового или перекрестного запроса. Значения в запросах этих типов
рассчитываются, поэтому их нельзя обновить с помощью запроса на обновление.
 Поля с типом данных "Счетчик". Значения в полях с типом данных "Счетчик"
изменяются только при добавлении записи в таблицу.
 Поля в запросах с уникальными значениями и в запросах уникальных записей
Значения в таких запросах суммарные. Некоторые значения представляют одну
запись, а другие — несколько записей. Операция обновления не может быть, так как
невозможно определить, какие записи были исключены как дубликаты, и поэтому
обновить все необходимые записи невозможно. Это ограничение действует
независимо от того, используете ли вы запрос на обновление или пытаетесь обновить
данные вручную, вводя значения в форму или таблицу.
 Поля в запросе на объединение Данные из полей в запросе на объединение
невозможно обновить, так как каждая запись, которая отображается в двух или более
источниках данных, отображается в результатах запроса на объединение только один
раз. Так как некоторые повторяющиеся записи удаляются из результатов, Access не
может обновить все необходимые записи.
 Поля, являющиеся первичными ключами. В некоторых случаях, например если
поле первичного ключа используется в связи таблиц, обновить поле с помощью
запроса невозможно, если только для связи не было настроено автоматическое
каскадное обновление.
Примечание: При каскадном обновлении Access автоматически обновляет значения
внешнего ключа при изменении значения первичного ключа в родительской таблице.

Использование запроса на обновление


Чтобы создать запрос на обновление, рекомендуется выполнить следующее:

 создать запрос на выборку для определения записей, которые требуется


обновить,
 затем преобразовать его в запрос на обновление и обновить записи.

Такая последовательность позволяет убедиться, что вы обновляете именно


нужные записи.

Совет: Перед выполнением запроса на обновление рекомендуется создать резервную


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

Создание резервной копии базы данных

1. Откройте вкладку Файл и выберите команду Сохранить как. Обратите внимание:


если вы используете Access 2010, откройте вкладку Файл и выберите команду
Сохранить и опубликовать.
2. Справа в разделе Расширенная установка щелкните элемент Создать резервную
копию базы данных.
3. В диалоговом окне Сохранение резервной копии укажите имя и расположение
резервной копии и нажмите кнопку Сохранить.

Приложение Access закроет исходный файл, создаст резервную копию и снова


его откроет.

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


чтобы получить возможность использовать имя исходной версии. Назначьте резервной
копии имя исходной версии и откройте переименованную резервную копию в Access.

Этап 1. Создание запроса на выборку для определения обновляемых записей

1. Откройте базу данных, содержащую записи, которые нужно обновить.


2. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
3. Откройте вкладку Таблицы.
4. Выделите одну или несколько таблиц с записями, которые требуется обновить, и
нажмите кнопку Добавить, а затем — кнопку Закрыть.

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


них кажутся все поля каждой таблицы. На рисунке показан конструктор запросов с
типичной таблицей.
1. Таблица в окне конструктора запросов

2. Бланк запроса

5. В окнах таблиц дважды щелкните поля, которые необходимо обновить. Выделенные


поля появятся в строке Поле бланка запроса.

Для каждого столбца в бланке запроса можно добавить одно поле таблицы.

Чтобы быстро добавить все поля в таблице, дважды щелкните звездочку (*) в
верхней части списка полей таблицы в окне таблицы. На рисунке показан бланк
запроса со всеми добавленными полями.

6. Чтобы ограничить результаты запроса на основе значений полей, в бланке запроса в


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

В таблице представлены некоторые примеры условий, а также результаты их


применения.

Примечание: Во многих примерах этой таблицы используются подстановочные


знаки, чтобы сделать запрос более гибким или эффективным.

Условие Результат
>234 Возвращает все числа больше 234. Чтобы найти все числа меньше 234, используйте
условие < 234.
>= " Новосибирск " Возвращает все записи от "Новосибирск" до конца алфавита.
Between #2.02.2020# And Выбирает даты между 2-фев-17 и 1-дек-17 (ANSI-89). Если в базе данных
#12.01.2020 # применяется набор подстановочных знаков ANSI-92, используйте вместо знаков
решетки (#) одинарные кавычки ('). Пример: Between '02.02.2020' And '01.12.2020'.
Not "Германия" Находит все записи, в которых содержимое поля не соответствует значению
"Германия". Согласно этому условию будут найдены записи, содержащие
дополнительный текст, кроме слова "Германия", например "Германия (евро)" или
"Европа (Германия)".
Not "Т*" Находит все записи кроме тех, которые начинаются с буквы "Т". Если в базе
данных применяются подстановочные знаки ANSI-92, используйте знак процента
(%) вместо звездочки (*).
Not "*т" Находит все записи, которые не оканчиваются буквой "т". Если в базе данных
применяются подстановочные знаки ANSI-92, используйте знак процента (%)
вместо звездочки (*).
In(Канада,Великобритания) Находит все записи в списке со словами "Канада" или "Великобритания".
Like "[А-Г]*" В текстовом поле выполняется поиск всех записей, которые начинаются на одну из
первых четырех букв алфавита (А-Г). Если в базе данных применяются
подстановочные знаки ANSI-92, используйте знак процента (%) вместо звездочки
(*).
Like "*ар*" Находит все записи, которые содержат сочетание букв "тр". Если в базе данных
применяются подстановочные знаки ANSI-92, используйте знак процента (%)
вместо звездочки (*).
Like "Григорий Верны?" Находит все записи, начинающиеся с имени "Григорий" и содержащие вторую
строку из 9 букв, из которых 6 букв составляют начало фамилии "Верный", а
последняя буква неизвестна. Если в базе данных применяется набор
подстановочных знаков ANSI-92, используйте вместо вопросительного знака (?)
знак подчеркивания (_).
#2/2/2020 # Находит все записи за 2 февраля 2020 г. Если в базе данных используется набор
подстрокных знаков ANSI-92, окружите дату одинарными кавычками (') вместо
знаков фунта (#); например: '02.02.2020').
< Date() - 30 Использует функцию Date для возврата всех дат не менее 30-дневной давности.
Date() Использует функцию Date для возврата всех записей, содержащих текущую дату.
Between Date( ) And Использует функции Date и DateAdd для возврата всех записей между текущей
DateAdd("M", 3, Date( )) датой и датой на три месяца позже.
Is Null Возвращает все записи, содержащие пустое (незаполненное или неопределенное)
значение.
Is Not Null Возвращает все записи, содержащие непустое значение.
"" Возвращает все записи, содержащие строку нулевой длины. Такие строки обычно
используются, когда поле обязательно должно иметь значение, но это значение еще
неизвестно. Например, в поле требуется ввести номер факса, но у некоторых
клиентов его нет. В этом случае вместо номера можно ввести пару двойных
кавычка без пробела между ними(").
7. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
8. Убедитесь, что запрос возвращает те записи, которые следует обновить.
9. Чтобы удалить поля, которые не нужно включать в конструктор запросов, выделите их
и нажмите клавишу DELETE.
10.Чтобы добавить поля в конструктор запросов, перетащите их в бланк запросов.
Этап 2. Обновление записей
1. На вкладке Конструктор в группе Тип запроса нажмите кнопку Обновить.
В описанной здесь процедуре показано, как преобразовать запрос на выборку в
запрос на обновление. При такой операции Access добавляет строку Обновление в
бланк запроса. На рисунке показан запрос на обновление, возвращающий все активы
компании, приобретенные после 5 января 2005 г., и изменяющий расположение на
"Склад 3" для всех записей, соответствующих этому условию.

2. Выберите поле с данными, которые следует изменить, и введите выражение


(условие изменения) в строке Обновление для этого поля.
В строке Обновление можно использовать любое допустимое выражение.
Таблица примеров выражений
В приведенной таблице представлены примеры выражений и соответствующие
им результаты изменения данных.
Выражение Результат
"Продавец" В поле типа "Текстовый" заменяет текстовое значение строкой "Продавец".
#8/10/20 # В поле "Дата/время" изменяет значение даты на "10-авг-20".
Да В поле типа "Да/Нет" изменяет значение Нет на Да.
"PN" & [ИнвНомер] Добавляет буквы "PN" к началу каждого указанного инвентарного номера.
[Цена] * [Количество] Перемножает значения полей с именами "Цена" и "Количество".
[СтоимостьДоставки] * 1,5 Увеличивает значения в поле "СтоимостьДоставки" на 50 процентов.
DSum("[Quantity] * Если значение поля "КодТовара" в текущей таблице совпадает со значением поля
[UnitPrice]", "КодТовара" в таблице "Заказано", данное выражение обновляет итоговые значения
"Сведения о заказе", продаж, рассчитывая их как произведение значений в полях "Цена" и "Количество".
"[ProductID]=" & Выражение использует функцию DSum, так как она может выполнять операции с
[ProductID]) несколькими таблицами и полями таблиц.
Right([Индекс], 5) Обрезает (удаляет) левые символы в текстовой или числовой строке, оставляя пять
правых символов.
IIf(IsNull([Цена]), 0, Заменяет пустое (неизвестное или неопределенное) значение нулем (0) в поле с
[Цена]) именем "Цена".
3. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Появится предупреждающее сообщение.
4. Для выполнения запроса и обновления данных нажмите кнопку Да.
Примечание: После выполнения запроса можно заметить, что в его результатах
отсутствуют некоторые поля. Если запрос содержит поля, которые не обновлялись, по
умолчанию эти поля не отображаются в результатах. Предположим, что были
включены поля "Код" из двух таблиц, чтобы убедиться, что запрос идентифицирует и
обновляет нужные записи. Если эти поля не обновлялись, то в приложении Access они
не отображаются в результатах.

Обновление данных в одной таблице данными из другой таблицы


При обновлении данных в одной таблице данными из другой необходимо
соблюдать основное правило: типы данных исходного и целевого полей должны
совпадать или быть совместимыми.
Кроме того, при обновлении данных в одной таблице данными из другой и
использовании совместимых типов данных вместо совпадающих приложение Access
преобразует типы данных этих полей в целевой таблице. В результате некоторые
данные в целевых полях могут обрезаться (удаляться).
Процесс обновления данных в одной таблице данными из другой включает
основные этапы:
1. Создание запроса на обновление и добавление в него исходной и целевой таблиц.
2. Объединение этих таблиц по полям, содержащим связанные сведения.
3. Добавление имен целевых полей в строку Поле бланка запроса.
4. Добавление имен исходных полей в строку Обновление бланка запроса с
использованием следующего синтаксиса: [исходная_таблица].[исходное_поле].

Действия, описанные в данном разделе, предполагают, что используются две


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

1 Музей научных Загородное шоссе, д. 150 Москва Московская обл. 12345 РФ (551) 999-01-01 Верный Григорий
достижений
2 Авиакомпания "Урал-тур" ул. Гарибальди, д. 170 Пермь Пермская обл. 23456 РФ (5501) 99-01-01 Корепин Вадим
3 Винный завод ул. Кедрова, д. 54 Красноярск Красноярский край 34567 РФ (5502) 99-02-01 Ожогина Инна
4 Фармацевтическая фабрика ул. Губкина, д. 233 Тверь Тверская обл. NS1 EW2 РФ (5503) 99-01-03 Новиков Николай
5 Кофейная фабрика пл. Хо Ши Мина, д. 15, кв. 5 Москва 56789 РФ (5504) 99-01-04 Шашков Руслан
6 Почтовая служба Лихов пер., 991 Красноярск Красноярский край 34567 РФ (5502) 99-02-01 Горноженко
Дмитрий
7 НИИ железа Ул. Тенистая, д. 698 Москва Московская обл. 87654 РФ (5505) 99-03-01 Грачев Николай
8 Корпорация "Софт" ул. Заречная, 503 Москва ИЛИ 31415 РФ (5501) 99-01-01 Ильина Юлия
9 Лесопитомник ул. Заречная, 504 Москва ИЛИ 31415 РФ (5501) 99-01-01 Сергиенко Мария
Таблица "Клиенты"
Код Имя Адрес Город Область Почтовы Страна Телефон Руководитель
клиента й индекс
1 Музей научных Загородное шоссе, д. 150 Москва Московская обл. 12345 РФ (551) 999-01-01 Песоцкий
достижений Станислав
2 Авиакомпания "Урал-тур" ул. Гарибальди, д. 170 Пермь Пермская обл. 23456 РФ (5501) 99-01-01 Корепин Вадим
3 Винный завод ул. Кедрова, д. 54 Красноярск Красноярский край 34567 РФ (5502) 99-02-01 Ожогина Инна
4 Фармацевтическая ул. Губкина, д. 233 Тверь Тверская обл. NS1 EW2 РФ (5503) 99-01-03 Новиков
фабрика Николай
5 Кофейная фабрика Орликов пер, д. 896 Москва 56789 РФ (5504) 99-01-04 Шашков Руслан
6 Почтовая служба Лихов пер., 991 Красноярск Красноярский край 34567 РФ (5502) 99-02-01 Подколзина
Екатерина
7 НИИ железа ул. Строителей, д. 150, кв. 78 Москва Московская обл. 87654 РФ (5505) 99-03-01 Попкова Дарья
8 Корпорация "Софт" ул. Заречная, 503 Москва ИЛИ 31415 РФ (5501) 99-01-01 Верный
Григорий
9 Лесопитомник ул. Заречная, 504 Москва ИЛИ 31415 РФ (5501) 99-01-01 Сергиенко
Мария
Важно. Типы данных каждого поля таблицы могут не совпадать, но они должны
быть совместимыми. Приложение Access должно быть в состоянии преобразовать
данные исходной таблицы в тип данных, используемый в целевой таблице. Иногда в
процессе преобразования часть данных удаляется.
Создание и выполнение запроса на обновление для приведенных выше таблиц:

1. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.


2. Выберите "Добавить таблицы"(добавление таблицы в Access 2013 ).
3. Дважды щелкните исходные и таблицы назначения, чтобы добавить их в запрос.
Каждая таблица появится в окне конструктора запросов.
4. В большинстве случаев Access автоматически объединяет связанные поля в запросе.
Чтобы объединить поля со связанными сведениями вручную, перетащите их из одной
таблицы в другую на место аналогичных полей.

Например, при использовании приведенных выше образцов таблиц перетащите


поле "Код клиента" на поле "Код заказчика". Access создаст связь между этими
полями в двух таблицах и будет использовать ее для объединения связанных записей.
5. На вкладке Конструктор в группе Тип запроса нажмите кнопку Обновить.
6. В целевой таблице дважды щелкните поля, которые нужно обновить. Каждое поле
будет появляться в строке Поле бланка запроса.
При использовании образцов таблиц добавьте все поля, за исключением поля
"Код заказчика". Обратите внимание, что имя целевой таблицы отображается в строке
Таблица бланка запроса.
7. В строке запроса Обновление в каждый столбец, содержащий целевое поле, добавьте
имя исходной таблицы и имя ее поля, соответствующего полю в целевой таблице,
используя синтаксис [Таблица].[Поле], где имена таблицы и поля заключены в
квадратные скобки и разделены точкой.
На рисунке показано, как выглядит часть бланка запроса при использовании
образцов таблиц. Обратите внимание на синтаксис имен таблицы и поля в строке
Обновление.
Имена таблицы и поля в строке Обновление должны быть написаны правильно
и что должна быть соблюдена пунктуация в именах исходной таблицы и поля. Регистр
букв можно не учитывать.
8. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
9. В ответ на запрос подтверждения нажмите кнопку Да.

Ограничения преобразования типов данных

В приведенной таблице представлен перечень типов данных Access и описаны


ограничения преобразования типов данных и возможные при этом потери данных.
Конечный Преобразуемый Изменения и ограничения
тип данных тип данных
Текстовый Поле MEMO 255 первых знаков остаются, остальные удаляются.
Числовой Нет ограничений.
Дата/время Нет ограничений.
Денежный Нет ограничений.
Счетчик Нет ограничений.
Логический Значение -1 ("Да" в логическом поле) преобразуется в "Да". Значение 0 ("Нет" в логическом поле) преобразуется в "Нет".
Гиперссылка Access обрезает ссылки длиннее 255 знаков.
Поле MEMO Текстовый Нет ограничений.
Числовой Нет ограничений.
Дата/время Нет ограничений.
Денежный Нет ограничений.
Счетчик Нет ограничений.
Логический Значение -1 ("Да" в логическом поле) преобразуется в "Да". Значение 0 ("Нет" в логическом поле) преобразуется в "Нет".
Гиперссылка Нет ограничений.
Числовой Текстовый Текст может включать только числа, допустимые денежные значения и разделители целой и дробной частей. Число знаков в поле с типом
данных "Текстовый" не должно превышать соответствующий размер поля, заданный для типа данных "Числовой".
Поле MEMO Поле МЕМО должно содержать только текст и допустимые разделители целой и дробной частей. Число знаков в поле МЕМО не должно
превышать соответствующий размер поля, заданный для типа данных "Числовой".
Числовой (с Значения не должны быть больше или меньше, чем размер нового поля. Из-за изменения точности приложение Access может округлить
другим некоторые значения.
размером поля
или другой
точностью)
Дата/время Возможность преобразования даты и времени зависит от размера числового поля. Следует помнить, что в приложении Access все даты
хранятся как порядковые номера, а значения даты и времени — как числа двойной точности с плавающей запятой.

Дата 30 декабря 1899 г. имеет порядковый номер 0. Даты, не входящие в интервал от 18 апреля 1899 г. до 11 сентября 1900 г., превышают
размер поля "Байт". Даты, не входящие в интервал от 13 апреля 1810 г. до 16 сентября 1989 г., превышают размер поля "Целое".

Чтобы вместить все возможные даты, присвойте свойству Размер поля числового поля значение Длинное целое или больше.
Денежный Значения не должны выходить за верхний и нижний пределы размера, заданного для поля. Например, поле с типом данных "Денежный"
Конечный Преобразуемый Изменения и ограничения
тип данных тип данных
можно преобразовать в поле "Целое" только в том случае, если его значение больше 255, но не превышает 32 767.
Счетчик Значения не должны выходить за пределы размера, заданного для поля.
Логический Значения "Да" преобразуются в -1. Значения "Нет" преобразуются в 0.
Дата/время Текстовый Исходный текст должен быть распознаемой датой или сочетанием даты и времени. Например, 18-янв-2020.
Поле MEMO Исходный текст должен быть распознаемой датой или сочетанием даты и времени. Например, 18-янв-2020.
Числовой Значение должно находиться в интервале от -657434 до 2958465,99998843.
Денежный Значение должно находиться в интервале от -657434 ₽ до 2958465,9999 ₽.
Счетчик Значение должно находиться в интервале от -657434 до 2958466.
Логический Значение -1 ("Да") преобразуется в 29 декабря 1899 г. Значение 0 ("Нет") преобразуется в полночь (00:00:00).
Денежный Текстовый Текст должен состоять только из чисел и допустимых разделителей.
Поле MEMO Текст должен состоять только из чисел и допустимых разделителей.
Числовой Нет ограничений.
Дата/время Нет ограничений, но Access может округлить значение.
Счетчик Нет ограничений.
Логический Значение -1 ("Да") преобразуется в 1 ₽. Значение 0 ("Нет") преобразуется в 0 ₽.
Счетчик Текстовый Не допускается, если поле с типом данных "Счетчик" является первичным ключом.
Поле MEMO Не допускается, если поле с типом данных "Счетчик" является первичным ключом.
Числовой Не допускается, если поле с типом данных "Счетчик" является первичным ключом.
Дата/время Не допускается, если поле с типом данных "Счетчик" является первичным ключом.
Денежный Не допускается, если поле с типом данных "Счетчик" является первичным ключом.
Логический Не допускается, если поле с типом данных "Счетчик" является первичным ключом.
Логический Текстовый Исходный текст должен содержать только значения "Да", "Нет", "Истина", "Ложь", "Вкл" и "Выкл".
Поле MEMO Исходный текст должен содержать только значения "Да", "Нет", "Истина", "Ложь", "Вкл" и "Выкл".
Числовой Нуль и пустое значение преобразуются в значение "Нет", все остальные значения преобразуются в значение "Да".
Дата/время Пустое значение и значение 00:00:00 преобразуются в значение "Нет", все остальные значения преобразуются в значение "Да".
Денежный Нуль и пустое значение преобразуются в значение "Нет", все остальные значения преобразуются в значение "Да".
Счетчик Все значения преобразуются в значение "Да".
Конечный Преобразуемый Изменения и ограничения
тип данных тип данных
Гиперссылк Текстовый Если исходный текст содержит допустимый веб-адрес, например adatum.com, www.adatum.com или http://www.adatum.com, он
а преобразуется в гиперссылку. Access пытается преобразовать и другие значения: текст становится подчеркнутым, а указатель мыши
изменяется при наведении на ссылку, но эти ссылки не работают. Текст может содержать любое допустимое обозначение веб-протокола, в
том числе http://, gopher://, telnet://, ftp:// или wais://.
Поле MEMO См. предыдущую запись. Действуют те же ограничения.
Числовой Не допускается, если поле с типом данных "Числовой" используется в связи. Если исходное значение представлено в форме допустимого
IP-адреса (четыре тройки цифр, разделенных точками: nnn.nnn.nnn.nnn), а числа соответствуют веб-адресу, в результате преобразования
получается действительная ссылка. В противном случае Access добавляет префикс http:// в начало каждого значения, и итоговые ссылки не
работают.
Дата/время В начало каждого адреса добавляется префикс http://, но итоговые ссылки практически никогда не работают.
Денежный В начало каждого значения добавляется префикс http://, но, как и в случае с датами, итоговые ссылки практически никогда не работают.
Счетчик Не допускается, если поле "Счетчик" используется в связи. В начало каждого значения добавляется префикс http://, но итоговые ссылки
практически никогда не работают.
Логический Access преобразует все значения "Да" в -1 и все значения "Нет" в 0 и http:// в начало каждого значения. Итоги не работают.

Вам также может понравиться