Создание запроса на добавление (или на создание таблицы)

Приведенные далее действия описывают процесс создания запроса на добавление или на создание таблицы. Вы переносите записи из таблицы Contacts(контакты) БД Marketing.accdb в таблицу PotentialClients(потенциальные клиенты) БД Sales.accdb. (Вы можете найти обе БД на странице "Missing CD" на Web-сайте www.missingmanuals.com.)

1. Откройте БД-источник.

В данном примере это БД Marketing.accdb, содержащая контактную информацию.

2. Создайте новый запрос, выбрав на ленте Создание → Другие →Конструктор запросов

(Create → Other → Query Design).

На экране появится диалоговое окно Добавление таблицы(Show Table).

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

В данном примере используется таблица Contacts.

4. Измените тип запроса на запрос на добавление, выбрав на ленте Работа с запросами| Конструктор → Тип запроса → Тип запроса: добавление(Query Tools | Design → Query Type → Append) (или выберите Работа с запросами | Конструктор → Тип запроса →

Тип запроса: создание таблицы(Query Tools │ Design → Query Type → Make Table) для превращения его в запрос на создание таблицы).

 
  Создание запроса на добавление (или на создание таблицы) - student2.ru

Конечная таблица (таблица PotentialClientsв БД Sales.accdb) уже существует. По этой причине применяется запрос на добавление вместо запроса на создание таблицы.

Когда вы измените тип запроса на запрос на добавление или на создание таблицы, про­грамма Access попросит указать конечную таблицу (место, куда вы будете копировать записи), как показано на рис. 8.6.

Рис. 8.6. Программа Access хочет знать, куда вы собираетесь перенести копируемые записи. Таблицу можно выбрать из удобного раскрывающегося списка. Если вы копируете данные из одной БД в другую, выберите переключатель в другой базе данных,щелкните мышью кнопку Обзор...для выбора файла БД и затем кнопку ОК

5. Если вы хотите переместить записи в другую БД, выберите переключатель в другой базе данных,затем нажмите кнопку Обзор...Укажите файл вашей БД и нажмите кнопку ОК, чтобы подтвердить ваш выбор.

Вы перемещаете записи в БД Sales.accdb.

Если вы планируете повторное использование нового запроса, не меняйте место хране­ния конечной БД. Если конечный файл переместить в другую папку или на другое уст­ройство (или переименовать его), программа Access не сможет найти его во время вы­полнения запроса и выдаст сообщение об ошибке.

6. В поле имятаблицы (Table Name) укажите имя таблицы, в которую вы хотите перенести записи.

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

Если вы формируете запрос на создание таблицы, нужно ввести имя таблицы для новой таблицы, и программа Access создаст ее во время выполнения запроса. В данном примере вы переносите записи в таблицу PotentialCIients.

7.Щелкните мышью кнопку ОК для того, чтобы закрыть диалоговое окно Добавлениеили Создание таблицы.

8. Теперь добавьте поле (или поля), которое вы хотите скопировать из таблицы-источника.

Напоминаю о том, что вы не должны копировать все поля. В данном примере нужно до­бавить только поля FirstNameи LastName.

9. Если создается запрос на добавление, вставьте имена полей конечной таблицы в строку Добавление(Append To).

 
  Создание запроса на добавление (или на создание таблицы) - student2.ru

В этом примере задайте в поле Добавлениедля FirstNameимя F_Name.В этом случае программа Access скопирует информацию из поля FirstName втаблице-источнике в поле F_Nameконечной таблицы (рис. 8.7). Аналогично задайте в поле LastName для добавления поле L_Name.

Рис. 8.7. Данный запрос на добавление переносит информацию из таблицы Contactsв БД Marketing в таблицу PotentialClientsБД Sales. Поскольку в обеих таблицах используются поля ID с типом данных Счетчик,номера ID в скопированных записях будут отличаться от номеров ID в исходных записях. (Если вас это не устраивает, нужно скопировать номера ID типа Счетчиктаблицы Contactsв обычный числовой столбец таблицы PotentialClients— такой, в котором не используется тип данных Счетчик.)

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

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

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

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

11. Щелкните правой кнопкой мыши заголовок вкладки и затем выберите команду Режим таблицыдля просмотра строк, на которые воздействует ваш запрос.

Этот шаг позволяет просмотреть строки, которые вы собираетесь копировать.

12. Если вы убедились в том, что все верно, вернитесь в Конструктори выберите на ленте Работа с запросами j Конструктор → Результаты → Выполнитьдля переноса ваших записей (Query Tools │ Design → Results → Run).

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

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

13. Для сохранения запроса нажмите комбинацию клавиш <Ctrl>+<S> (или закройте вкладку запроса). Вам нужно задать имя запроса.

Если вы не собираетесь повторно использовать запрос, подумайте о его удалении.

Получение начальных значений типа Счетчик, отличных от 1

Ведущие специалисты Access применяют запросы в одном из самых изощренных искусст­венных приемов: замене в поле таблицы с типом Счетчикначального значения числом, от­личающимся от 1.

Как вы узнали в главе 2, программа Access всегда генерирует значения типа Счетчик,на­чиная с 1. (Единственное исключение — применение случайных чисел или кодов реплика­ций, два редких варианта, описанных в разд. "Применение поля типа Счетчик без раскрытия реального размера вашей таблицы" главы 2.) Но существует множество причин, вызываю­щих желание изменить такое поведение программы. Например, компании Boutique Fudge хочется начать нумерацию своих клиентов с 1000, а номеров товаров — с 5000, или начать нумеровать свои заказы с 10 000. Эти схемы нумерации часто облегчают бухгалтерский учет. Они позволяют сохранять постоянным количество цифр в значениях типа Счетчик,помогают разделить коды вдвух разных таблицах и не смущаться, сообщая клиенту о том, что он сделал заказ номер 1.

К счастью, существует (немного неуклюжий) способ обмануть систему и заставить Access начать отсчет с любого нужного вам числа. Для того чтобы сделать то, что вы не можете сделать сами, применяется запрос на добавление. Просто вставляется запись с заданным значением типа Счетчик.После того как запись создана, программа Access наращивает зна­чения, начиная со вставленного вами значения. Таким образом, если вы добавили запись типа Счетчиксо значением 999, Access присвоит следующей записи значение 1000 и т. д.

Вот как это делается.

1. Создайте новую таблицу (Создание → Таблицы → Конструктор(Create → Tables →Table Design)).

Эта таблица будет храниться всего несколько минут.

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

Обычно у него имя Код(ID).

3. Измените тип данных поля на Числовой(вместо Счетчик)и убедитесь в том, что размер поля — Длинное целое (Long Integer) (стандартный выбор).

4. Щелкните правой кнопкой мыши заголовок таблицы и выберите Режим таблицы.

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

5. В Режиме таблицывведите в поле с типом данных Числовойвременной таблицы значение, на 1 меньшее того, которое вы хотите использовать в качестве начального в поле с типом данных Счетчик.

Если вы хотите начать со значения 100 в поле с типом Счетчик,введите в поле с типом Числовойзначение 99. Закройте таблицу.

6. Создайте новый запрос (Создание → Другие →Конструктор запросов(Create →Other → Query Design)).

В появившемся диалоговом окне Добавление таблицы(Show Table) выберите создан­ную вами временную таблицу (Таблица!.)и щелкните мышью кнопку Закрыть(Close).

7. Выберите на ленте Работа с запросами J Конструктор → Тип запроса → Тип запроса:

добавление(Query Tools | Design → Query Type →Append) для изменения типа запроса на запрос на добавление.

Когда программа Access запрашивает, в какую таблицу вы хотите добавить запись, выбе­рите таблицу с полем типа Счетчик,значения которого вы хотите попробовать изменить.

8. Дважды щелкните кнопкой мыши поле, которое вы добавили в вашу таблицу (например Код (ID)).

Программа Access задаст в строке Добавлението же имя, это как раз то, что надо.

9. Выберите на ленте Работа с запросами | Конструктор → Результаты → Выполнить

(Query Tools | Design → Results →Run).

Щелкните мышью кнопку Да,когда Access предупредит вас о том, что собирается доба­вить запись.

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

Начиная с этого момента и далее, значения типа Счетчикбудут увеличиваться, начиная с добавленного значения.

11. Удалите временную таблицу, созданную в пункте 1, поскольку она вам больше не нужна.

У этого метода есть несколько ограничений. А именно, если у вашей таблицы строгие правила верификации — например, у одного или нескольких полей в свойстве Обязательное полезадано значение Да — Access не разрешит вам вставить новую запись с помощью запроса на добавление. В этой ситуации нужно либо отключить правила верификации (временно установив для всех полей в свойстве Обязательное полезначение Нет), либо добавить обязательные поля с корректными значениями в вашу временную таблицу.

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

Запросы на удаление — самые простые и самые опасные из всех типов запросов на измене­ние. Запрос на удаление действует во многом так же, как запрос на выборку: вы задаете ряд условий отбора, и затем программа Access находит соответствующие записи в таблице. Но запросы на удаление не просто отображают записи, а удаляют их из вашей БД.

Примечание

Дважды подумайте, прежде чем удалять что бы то ни было. Старая информация вам может понадобиться для отчетов или анализа. В разд. "Редактирование таблицы" главы 1 объясняет­ся, почему.

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

Для создания запроса на удаление выполните следующие действия.

1. Создайте новый запрос (Создание → Другие → Конструктор запросов(Create → Other → Query Design)).

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

3. Измените тип вашего запроса на запрос на удаление, выбрав Работа с запросами | Конструктор → Тип запроса → Тип запроса: удаление(Query Tools | Design →Query Type → Delete).

В списке свойств полей исчезнут строки Сортировкаи Вывод на экрани появится поле Удаление (Delete).

4. Добавьте поля, которые вы хотите использовать для отбора, и задайте условия отбора.

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

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

Очень важно убедиться в том, что вы удаляете только те записи, которые хотели удалить, У запросов на удаление есть чудесное свойство, которое поможет вам идентифицировать каждую запись, прежде чем вы выполните реальную операцию удаления. Для его приме­нения щелкните дважды кнопкой мыши звездочку (*) в списке полей таблицы. Значение в строке Удаление автоматически изменится на Из (From), означающее, что данная ин­формация не используется как часть условия отбора — напротив, она применяется для отображения списка предназначенных для удаления записей в ваших окнах предвари­тельного просмотра.

На рис. 8.8 показан окончательный вариант запроса на удаление.

6. Щелкните правой кнопкой мыши заголовок вкладки и затем выберите Режим таблицыдля того, чтобы увидеть строки, на которые повлияет ваш запрос.

Этот шаг позволит предварительно просмотреть строки, которые вы собираетесь уда­лить. Когда применяется звездочка (*), на экран выводится вся информация, относящаяся к каждой записи.

7. Если вы уверены, что получена корректная информация, вернитесь в Конструктори затем выберите на ленте Работа с запросами | Конструктор → Результаты →Выполнить(Query Tools | Design → Results → Run) для удаления записей.

 
  Создание запроса на добавление (или на создание таблицы) - student2.ru

Рис. 8.8. Этот запрос удаляет записи со старыми заказами, первое поле в запросе определяет условие отбора (заказы с датами в поле DatePlaced (дата размещения) наступившими до 1900 г.). Второе поле (*) — сокращенная ссылка, позволяющая увидеть в окне предварительного просмотра все поля для того, чтобы можно было внимательно изучить данные, которые вы собираетесь удалять

Программа Access предупредит вас об изменении, которое собирается сделать. Щелкните мышью кнопку ОК, если хотите навсегда удалить записи.

8. Если хотите сохранить запрос, нажмите комбинацию клавиш <Ctrl>+<S> (или закройте вкладку запроса). Вы должны задать имя вашего запроса.

Если вы не собираетесь использовать запрос на удаление повторно, не сохраняйте его. Это опасное средство, которое не стоит оставлять под рукой.

Наши рекомендации