- •Часть I. Хранение данных в таблицах 34
- •Глава 1. Создание вашей первой базы данных 35
- •Глава 2. Создание более сложных таблиц 66
- •Глава 3. Обработка листа данных: сортировка, поиск,
- •Глава 4. Блокировка неправильных данных 136
- •Глава 5. Связывание таблиц с помощью отношений 168
- •Часть II. Обработка данных с помощью запросов 206
- •Глава 6. Запросы, выбирающие записи 207
- •Глава 7. Основные хитрости, применяемые в запросах 241
- •Глава 8. Запросы, обновляющие записи ..272
- •Глава 9. Анализ данных с помощью перекрестных запросов и
- •Часть III. Отчеты 323
- •Глава 10. Создание отчетов 324
- •Глава 11. Проектирование сложных отчетов 356
- •Часть IV. Разработка пользовательского интерфейса
- •Глава 12. Создание простых форм 392
- •Глава 13. Проектирование сложных форм 426
- •Глава 14. Создание системы переходов 465
- •Часть V. Программирование в access 496
- •Глава 15. Автоматизация задач с помощью макросов 497
- •Глава 16. Автоматизация выполнения задач средствами языка
- •Глава 17. Написание кода с более развитой логикой 571
- •Часть VI. Совместное использование access 615
- •Глава 18. Совместное использование бд несколькими пользователями 616
- •Глава 19. Импорт и экспорт данных 650
- •Глава 20. Подключение Access к sql Server 692
- •Глава 21. Подключение Access к SharePoint 724
- •На профессиональном уровне. Преимущества хорошо спроектированной базы данных
- •Для тех, кто понимает. Когда программы Access недостаточно
- •Уголок ностальгии. Зачем опять изобретать колесо?
- •Уголок ностальгии. Сочетания клавиш в Access 2003
- •Часть I
- •Часто задаваемый вопрос. Использование чужой бд
- •На профессиональном уровне. Шаблоны, подходящие для разных целей
- •На профессиональном уровне. Работа Access в интерактивном режиме
- •Для тех, кто понимает. Использование Access бд, созданных в более ранних версиях программы
- •На профессиональном уровне. Проектирование бд для начинающих
- •На профессиональном уровне. Вставка больших значений в узкие столбцы
- •Для тех. Кто понимает. Если сомневаетесь, не удаляйте
- •Малоизвестная или недооцененная возможность. Копирование записи целиком за один шаг
- •Малоизвестная или недооцененная возможность. Сжатие бд
- •Часто задаваемый вопрос. У какого файла расширение laccdb?
- •Практические занятия для опытных пользователей. Изменение папки, которую Access использует для хранения бд
- •Малоизвестная или недооцененная возможность. Сворачивание ленты
- •Экономящая время подсказка. Создание ярлыка для таблицы
- •Глава 2
- •Для тех, кто понимает. Изменение типа данных может привести к потере информации
- •На профессиональном уровне. Нормативы максимальной длины
- •На профессиональном уровне. Как Access предотвращает дублирование записей
- •На профессиональном уровне. Почему так важна уникальность
- •Глава 3
- •Малоизвестная или недооцененная возможность. Настройка всех листов данных
- •На профессиональном уровне. Числа и специальные символы в текстовых полях
- •Практические занятия для опытных пользователей. Фильтры в противоположность запросам
- •Малоизвестная или недооцененная возможность. Поиск и замена
- •Глава 4
- •Для тех, кто понимает. Не требуйте слишком многого
- •На профессиональном уровне. Как работают индексы
- •Часто задаваемый вопрос. Индексы и производительность
- •Практические занятия для опытных пользователей. Вставка вашей маски в список масок программы
- •На профессиональном уровне. Создание списка подстановки, использующего другую таблицу
- •Глава 5
- •Часто задаваемый вопрос. Отключение обеспечения целостности данных
- •Для тех, кто понимает. Пользуйтесь каскадным удалением с осторожностью
- •Практические занятия для опытных пользователей. Изменение параметров подтаблицы
- •Часто задаваемый вопрос. Обновление списка
- •Для тех, кто понимает. Применяйте связи "один-к-одному" с осторожностью
- •Часто задаваемый вопрос. Работа со связями "многие-ко-многим"
- •Часто задаваемый вопрос. Печать ваших отношений
- •Часть II
- •Для тех, кто понимает. Не бойтесь подстановок
- •На профессиональном уровне. Синтаксис фильтра
- •Практические занятия для опытных пользователей. Как индексы ускоряют поиск
- •Малоизвестная или недооцененная возможность. Запросы на базе запросов
- •Для тех, кто понимает. Подумайте дважды, прежде чем изменять структуру таблиц
- •На профессиональном уровне. Сравнение: отношения и объединения
- •На профессиональном уровне. Изменение данных при использовании запроса с объединением
- •Глава 7
- •На профессиональном уровне. Синхронизация запросов
- •Малоизвестная или недооцененная возможность. Переименование поля в запросе
- •Часто задаваемый вопрос Банковское округление
- •Практические занятия для опытных пользователей. Улучшенные числовые форматы
- •Малоизвестная или недооцененная возможность. Использование случайных чисел для сортировки в случайном порядке
- •Практические занятия для опытных пользователей. Как извлечь первое слово из текстовой строки
- •Для тех, кто понимает. Вычисления для дат и времени
- •Глава 8
- •Аварийная ситуация. Когда Access блокирует ваше обновление
- •Малоизвестная или недооцененная возможность. Скрытие запроса
- •Глава 9
- •Часто задаваемый вопрос. Итоговый проигрыш; итоговый запрос против перекрестного
- •Для тех, кто понимает. Создание запроса с объединением для лучшей группировки
- •На профессиональном уровне. Правильный выбор групп
- •Малоизвестная или недооцененная возможность. Помещение сводных таблиц в их собственные формы
- •Часть III
- •Глава 10. Создание отчетов
- •Глава 11. Проектирование сложных отчетов
- •Глава 10
- •На профессиональном уровне. Выполнение тяжелой работы с помощью запроса
- •Часто задаваемый вопрос. Добавление изображений в отчеты.
- •На профессиональном уровне. Учитесь любить pdf-файлы
- •Часто задаваемый вопрос. Разные способы экспорта данных
- •Малоизвестная или недооцененная возможность. Формат по образцу.
- •Практические занятия для опытных пользователей. Разные линии сетки
- •Глава 11
- •Часто задаваемый вопрос. Ошибки выражений
- •Часть IV
- •На профессиональном уровне. Поля типа Счетчик в формах
- •На профессиональном уровне. Разные люди — разные формы
- •Малоизвестная или, недооцененная возможность. Вывод на экран изображений из бд
- •На профессиональном уровне. Семейство форм Access
- •Глава 13
- •На профессиональном уровне. Присоединенные элементы управления
- •Малоизвестная или недооцененная возможность. Повторное применение ваших любимых настроек стиля границ
- •Часто задаваемые вопросы. Осовременивание элементов управления Windows
- •Практические занятия для опытных пользователей. Как освободиться от привязки к сетке
- •На профессиональном уровне. Насколько велик ваш экран?
- •Глава 14
- •Малоизвестная или недооцененная возможность. Варианты сортировки и просмотра в области переходов
- •На профессиональном уровне. Кнопочные формы с несколькими страницами
- •За кадром. Меню кнопочных форм сохраняются в бд
- •Часть V
- •На профессиональном уровне. Макросы по сравнению с программным кодом
- •Практические занятия для опытных пользователей. Обработка ошибок макроса
- •На профессиональном уровне. Макрокоманды, которым Access не доверяет
- •На профессиональном уровне. ОтправитьОбъект работает с вашей программой элекронной почты
- •Часто задаваемый вопрос. Внедренный макрос
- •Глава 16
- •Малоизвестная или недооцененная возможность. Справка по Visual Basic
- •Для тех кто понимает. Как код связывается с событиями
- •Малоизвестная или недооцененная возможность Разбиение длинных строк кода
- •На профессиональном уровне. Взаимодействие с другими формами
- •Практические занятия для опытных пользователей. Получение нужного цвета
- •Часто задаваемый вопрос. Ленточные формы и неприсоединенные элементы управления
- •Практические занятия для опытных пользователей. Связывание записей с рисунками
- •Глава 17
- •Практические занятия для опятных пользователей. Применение более сложных переменных
- •Практические занятия для опытных пользователей. Применение пользовательских функций в запросах
- •На профессиональном уровне. Алгоритм Луна (Luhn Algorithm)
- •Часто задаваемый вопрос. Запуск других Windows-программ
- •На профессиональном уровне. Станьте знатоком статистических функции по подмножеству
- •Уголок ностальгии. Dао против аdо
- •Часть VI
- •Для тех, кто понимает. Поиск места в сети для вашей бд
- •На профессиональном уровне Указание местонахождения в сети
- •Часто задаваемый вопрос. Как поведут себя старые версии Aсcess?
- •Аварийная ситуация. Мистическая ошибка “Файл уже используется”
- •Часто задаваемый вопрос. Когда не следует пользоваться форматом accde
- •Уголок ностальгии. Отмирание страниц доступа к данным
- •Практические занятия для опытных пользователей. Разделение таблиц для более безопасных корректировок
- •Уголок ностальгии. Защита с помощью рабочих групп упразднена
- •Глава 19
- •На профессиональном уровне. Sql Server и SharePoint: два частных случая
- •Сберегающая время подсказка. Копирование из одной бд в другую
- •На профессиональном уровне. Опасность дубликатов
- •Малоизвестная или недооцененная возможность. Экспорт отчетов
- •На профессиональном уровне. Более внимательный взгляд на теги
- •Глава 20
- •На профессиональном уровне. Важнейшие причины перехода на sql Server
- •Часто задаваемые вопрос. Можно ли доверять корпорации Microsoft?
- •На профессиональном уровне. Проекты Access по сравнению со связанными таблицами
- •0 Запросах
- •Для тех, кто понимает. Синтаксические различия
- •Глава 21
- •Часто задаваемый вопрос. Путаница, связанная с SharePoint
- •На профессиональном уровне. Установка SharePoint
- •На профессиональном уровне. Пять интересных инструментов программы SharePoint, которые стоит опробовать
- •Малоизвестная или недооцененная возможность.
- •Малоизвестная или недооцененная возможность. Представление таблицы данных Access
- •Малоизвестная или недооцененная возможность. Параметры списков SharePoint
На профессиональном уровне. Проекты Access по сравнению со связанными таблицами
Проекты Ассеss и связанные таблицы выглядят как два похожих варианта. Они позволяют создавать клиентские БД Access, работающие с данными, хранящимися в БД SQL Server. Но у этих вариантов есть несколько важных различий.
Обновляемостъ. Несмотря на то, что для изменения данных можно применять оба варианта, структуру связанной таблицы изменять нельзя. Таким образом, если нужно добавить поля, установить отношения и т. д., необходимо использовать проект Access.
Обработка запросов. Когда создается проект Access, ваши запросы преобразуются в объекты SQL Server и хранятся на сервере. Когда создается связанная таблица, запросы остаются в клиентской БД. Трудно сказать, какой подход лучше. Обычно у проектов Access более высокая производительность обработки запроса, поскольку большую часть работы выполняет сервер. (Это особенно справедливо, если выполняется запрос, который отбирает несколько записей из большой таблицы.) Связанные таблицы позволяют продолжать применять хорошо знакомый конструктор запросов программы Access и устраняют возможность ошибок преобразования запроса.
Тип файла. Связанные таблицы помещаются в обычный файл Access. (Вы даже можете поместить их рядом с обычными таблицами.) Проект Access всегда должен сохраняться в специальном файле с расширением adp.
Вы узнали о связанных таблицах в главе 19. В оставшейся части данной главы предполагается, что создается проект Access.
Подсказка
Хотите вернуться назад другим путем и переслать данные из SQL Server в Access? Если так, воспользуйтесь средствами импорта и экспорта в программе Access, о которых вы узнали в главе 19.
После завершения процесса преобразования можно продолжать работать с таблицами так же, как вы делали это прежде. Например, можно открывать ваши таблицы в Режиме таблицы, редактировать записи и применять ваши формы и отчеты. Разница в том, что теперь ваша копия Access связывается с программой SQL Server для получения нужных данных и вносит изменения.
Во время редактирования данных и применения форм и отчетов вы не заметите разницы между новой преобразованной БД и вашей исходной БД (за исключением, возможно, некоторого снижения быстродействия). Однако разница станет заметной, когда вы создадите новую таблицу или запрос, либо когда вы измените дизайн существующей таблицы или запроса. Все потому, что таблицы и запросы на самом деле хранятся в БД SQL Server, а эти БД спроектированы несколько иначе, чем их дубликаты в Access.
Вы начнете рассматривать различия в разд. "Добавление объектов в БД SQL Server" далее в этой главе. Но сначала стоит рассмотреть, как управлять только что созданной БД SQL Server.
Управление вашей БД
На территории Access легко удалять, перемещать, создавать резервную копию БД. Нужно всего лишь найти соответствующий файл с расширением accdb и использовать средство управления файлами, например программу Проводник ОС Windows.
Программа SQL Server работает иначе. Как вы уже узнали, она обрабатывает файлы за кадром, не раскрывая имен этих файлов. Но даже если вы знаете, где искать файлы БД, вы мало что сможете с ними сделать. Например, если нужно перенести БД SQL Server с одного сервера на другой, простая операция вырезания и вставки в Проводнике не сработает. Исходный сервер будет продолжать искать БД, которую вы перенесли, а новый сервер будет продолжать ее игнорировать.
Если вы хотите выполнять задачи управления, такие как удаление, перенос или копирование БД, необходимо работать с программой SQL Server, т. к. она может перемещать файлы и изменять каталог БД. Один из вариантов — загрузить из Интернета бесплатное программное средство SQL Server Management Studio (см. рис. 20.2), которое поможет выполнять широкий круг задач администрирования. (Например, это средство понадобится, если у вас грандиозные планы, и вы начинаете настраивать параметры безопасности SQL Server для того, чтобы дать разрешения одним пользователям и отказать другим.) Однако самые распространенные задачи управления можно выполнять и прямо в программе Access. Секрет кроется в применении кнопки Office → Server (Office → Сервер) (меню Server (Сервер) появляется, только если открыт проект Access).
У вас в меню есть следующие варианты.
■ Connection (Подключение). Выводит на экран диалоговое окно Data Link Properties (Свойство связи с данными), в котором можно изменять параметры подключения для вашего файла проекта Access. Обычно к этому окну обращаются при возникновении проблем подключения к вашей БД SQL Server. Например, если кто-то переместил или переименовал БД SQL Server или изменили имя пользователя и пароль, нужные вам для регистрации, именно в этом окне можно обновить ваши параметры. Задайте новый сервер, новое имя БД или сведения о пароле и щелкните мышью кнопку ОК для повторного подключения.
Подсказка
Если вы открыли файл проекта Access и не видите никаких таблиц, а в строке заголовка появляется сообщение "Disconnected" ("Нет соединения"), программа Access не смогла подключиться к вашей БД. Если имя БД или сервера были изменены недавно, выберите кнопку Office → Server → Connection (Office → Сервер → Подключение) для устранения проблем.
Server Properties (Свойства сервера). Отображает диалоговое окно с базовыми сведениями о вашей БД, включая программу, которая выполняется (SQL Server), ее версию (у SQL Server 2005 номер версии 9), расположение сервера и текущей БД. В этом окне нельзя изменять никакие данные.
Link Tables (Связь с таблицами). Позволяет добавить одну или несколько связанных таблиц к вашему текущему проекту Access. Как правило, суть заключается в добавлении связанных таблиц из другой БД (или даже другого сервера БД). Таким образом, вы можете видеть все, используя один файл Access.
Back Up SQL Database (Резервная копия базы данных). Создает резервную копию вашей БД SQL Server в файле с расширением dat, который можно поместить куда угодно (на серверный или на свой компьютер). Специалисты SQL Server обычно предпочитают применять средство, позволяющее создавать резервные копии автоматически, например SQL Server Agent (это средство входит только в полную версию SQL Server).
Restore SQL Database (Восстановление базы данных Microsoft SQL Server из резервной копии). Берет файл с расширением dat, который был создан командой Office → Server → Back Up SQL Database (Office → Сервер → Резервная копия базы данных), и создает заново соответствующую БД SQL Server.
Transfer Database... (Перенос базы данных...). Позволяет переместить БД с одного компьютера на другой. (На обоих компьютерах должна быть программа SQL Server.) Программа Access сохраняет новое расположение сервера в вашем файле проекта, поэтому можно продолжать использование БД, находящейся на ее новом месте. Это средство
■ удобно, если вы тестировали БД SQL Server на своем компьютере и теперь хотите перенести ее на сетевой сервер, где любые пользователи смогут обращаться к ней.
Copy Database File... (Копирование базы данных...). Если вы запускаете программу SQL Server на своем компьютере, этот вариант позволяет создать копию файла БД, которую можно взять на другой компьютер. (Если вы подключены к копии программы SQL Server на другом сервере, эта команда работать не будет.) Обычно легче использовать команду Office → Server → Transfer Database... (Office → Сервер → Перенос базы данных...), поскольку она делает все за один шаг.
Drop SQL Database (Удаление базы данных SQL Server). Стирает БД в программе SQL Server и удаляет ее.
Set Logon Password (Задание пароля входа в систему). Если применяется смешанный режим аутентификации, эта команда позволяет изменить пароль SQL Server.
Создание БД SQL Server вручную
Программа Access разрешает создать пустую новую БД SQL Server и затем добавить в нее таблицы, которые нужны. Вот как это делается.
1. Выберите Office → New (Office → Создать) (или просто запустите программу Access, не открывая файл БД, и щелкните кнопкой мыши пиктограмму Blank Database (Новая база данных)).
На экране появится окно Getting Started (Приступая к работе).
2. В правой части окна щелкните кнопкой мыши пиктограмму папки, расположенную рядом с именем файла БД.
На экране вы увидите диалоговое окно New Database (Файл новой базы данных).
3. В списке Save as type (Тип файла) выберите строку Microsoft Office Access Projects
(*.adp) (Проекты Microsoft Office Access (*.adp)).
4. Выберите папку, в которую хотите поместить клиентскую БД (adp-файл), введите имя в поле File name (Имя файла) (например, ZooAnimals.adp) и затем щелкните мышью кнопку ОК.
Программа Access вернет вас на страницу Getting Started (Приступая к работе) с вашей информацией на панели New Project (Новый проект) в правой части окна.
5. Щелкните мышью кнопку Create (Создать), чтобы узаконить выполненные действия.
Программа Access поинтересуется вашим желанием использовать существующую БД SQL Server.
6. Щелкните мышью кнопку No (Нет) для создания собственной новой БД.
Появится окно с вопросом о местонахождении вашего сервера и имени создаваемой БД. Этот этап вы уже видели раньше в мастере преобразования БД (см. рис. 20.6).
7. Введите расположение сервера вашей БД и имя БД, которую хотите создать, и затем щелкните мышью кнопку Finish (Готово).
Программа Access создаст пустую БД SQL Server (и adp-файл вашего проекта). После небольшой задержки на экране появится окно Access с пустой областью переходов.
Когда будете готовы к созданию вашей первой таблицы, переходите к следующему разделу.
Добавление объектов в БД SQL Server
Самая замечательная черта поддержки программы SQL Server в Access заключается в возможности работы в знакомом окне программы Access, даже когда вы работаете с совершенно другим процессором БД. Но за это удобство приходится платить. Как вы увидите в следующих разделах, создание объектов БД для SQL Server не так наглядно, как их создание в программе Access.
Создание таблицы
Создать таблицу можно в любом проекте Access (файл с расширением adp), будь то новая БД, созданная вами с нуля, или существующая БД, с которой вы работаете, в любом случае процесс одинаков.
Сначала выберите на ленте Create → Tables → Table Design (Создание → Таблицы → Конструктор таблиц). В режиме таблицы создать таблицу нельзя. Всегда следует начинать в режиме Design View (Конструктор). Можно также обычным способом редактировать имеющуюся таблицу в конструкторе. Просто щелкните ее правой кнопкой мыши и выберите режим Design View (Конструктор).
Когда на экране появится окно конструктора, вы заметите, что оно выглядит несколько иначе, чем, конструктор для обычных таблиц Access. К счастью, работает режим в основном так же. Вы добавляете список полей сверху вниз и настраиваете имя, тип данных и размер
каждого поля. (В программе SQL Server они называются столбцами, а не полями, но на самом деле это не имеет значения.)
У каждого поля есть пять столбцов информации (рис. 20.10), которые вы должны заполнить.
Column Name (Имя столбца). Этот столбец идентифицирует поле (так же как в обычной таблице Access). Во избежание неприятностей не используйте пробелы и специальные символы.
Data Type (Тип данных). Этот столбец определяет тип данных, которые может хранить поле (так же как это делается в обычной таблице Access). Но набор типов данных, предоставляемый программой SQL Server, отличается от набора типов, используемых программой Access.
Рис. 20.10. В этом примере показан режим Design View в стиле SQL Server для уже знакомой таблицы Customers из БД BoutiqueFudge
■ Length (Длина). Этот столбец в грубом приближении соответствует свойству Field Size
(Размер поля) в Access. Для основанных на тексте типов данных длина равна количеству допустимых символов. Для большинства типов данных размер поля служит лишь для сведения; он отображает количество байтов, занятых значением поля, и не может быть изменен.
■ Allow Nulls (Разрешить пустые значения). Этот столбец соответствует свойству Required (Обязательное поле) в программе Access. Если в столбце установлен флажок, вы сообщаете программе SQL Server о том, что пустые значения разрешены, т. е. пользователь БД может пропустить это поле.
■ Description (Описание). В этом столбце приводится описание вашего поля на обычном английском. Заполнять его или нет — ваше дело.
При проектировании таблицы также необходимо задать первичный ключ. Обычно для этого используется поле, хранящее автоматически сгенерированный код. Для обозначения поля как первичного ключа щелкните его кнопкой мыши для выделения и затем выберите на ленте Table Tools | Design → Tools → Primary Key (Работа с таблицами | Конструктор → Сервис → Ключевое поле). Вы увидите пиктограмму ключа, отображаемую у левого края строки.
Когда работа с таблицей завершена, закройте ее. Программа Access напомнит о необходимости сохранить таблицу и выбрать для нее имя. Затем можно начать ввод данных на привычном листе данных программы Access, который нисколько не изменился.
Примечание
Возможно, вы заметили, что проекты Access медлительнее, чем обычные файлы БД. Все дело в том, что программе Access за кадром приходится взаимодействовать с программой SQL Server, запрашивая создание таблиц, выполнение операций над данными и т. д.
Типы данных SQL Server
Было бы чудесно, если бы программы SQL Server и Access применяли один и тот же набор типов данных. Но у этих приложений разное происхождение и порой их отличия заметны.
К счастью, между большинством типов данных программ есть близкое соответствие. Это означает, что у большей части типов данных Access есть соответствующий тип данных SQL Server, очень близкий к типу Access. (Когда БД преобразуется, программа Access, как пра- вило, способна подобрать хорошее соответствие.) В табл. 20.1 приведены типы данных про- граммы SQL Server, которые вы получаете для разных типов данных Access.
Примечание
У программы SQL Server есть еще много типов данных, не приведенных в этой таблице и не имеющих близких аналогов в программе Access. Но типы данных, которые включены в таблицу, — несомненно, самые распространенные.
Таблица 20.1. Сравнение типов данных SQL Server и Access
Тип данных Access |
Эквивалент SQL Server |
Текстовый (Text) |
nvarchar (способен хранить до 4000 символов, в отличие от Текстового типа данных Access, у которого верхний предел составляет 255 символов) |
Тип данных Access |
Эквивалент SQL Server |
Поле Memo (Memo) |
ntext |
Числовой (Number) (со значением в свойстве Размер поля (Field Size) — Целое (Integer)) |
smallint |
Числовой (Number) (со значением в свойстве Размер поля (Field Size) — Длинное целое (Long Integer)) |
int |
Числовой (Number) (со значением в свойстве Размер поля (Field Size) — Одинарное с плавающей точкой (Single)) |
real |
Числовой (Number) (со значением в свойстве Размер поля (Field Size) —Двойное с плавающей точкой (Double)) |
float |
Числовой (Number) (со значением в свойстве Размер поля (Field Size) —Действительное (Decimal)) |
decimal |
Числовой (Number) (со значением в свойстве Размер поля (Field Size) — Байт (Byte)) |
tinyint |
Числовой (Number) (со значением в свойстве Размер поля (Field Size) — Код репликации (ReplicationID)) |
uniqueidentifier |
Дата/время (Date/Time) |
datetime |
Денежный (Currency) |
money |
Счетчик (AutoNumber) |
int (с параметром Identity равным Yes (Да)) |
Логический (Yes/No) |
bit |
Гиперссылка (Hyperlink) |
nvarchar |
Вложение (Attachment) |
nvarchar (сохраняется только имя файла) |
Таблица 20.1 (окончание)
Поля типа Счетчик
Возможно, вы заметили, что у программы SQL Server нет типа данных Счетчик. Но не дайте себя одурачить, решив, что нет способа получить это невероятно полезное средство в программе SQL Server. Просто задавать его придется немного иначе.
Когда создаете поле ID (Код), задайте для него тип данных int.
На вкладке Columns (Столбцы), расположенной под списком полей, задайте свойство Identity равным Yes (Да).
Значение параметра Identity — это имя поля типа Счетчик в программе SQL Server. Это имя программа присваивает автоматически и гарантирует его уникальность.
3. Вы также можете задать свойства Identity Seed (Начальное значение IDENTITY) и Identity Increment (Приращение IDENTITY).
□ Значение Identity Seed (Начальное значение IDENTITY) — начальное значение. Это свойство — досадное упущение программы Access, которая всегда начинает считать с 1.
Значение Identity Increment (Приращение IDENTITY) — величина, на которую программа SQL Server увеличивает очередное значение. Например, если Identity Increment — 5, вы увидите числа 1, 6, 11, 16 и т. д. Конечно, программа SQL Server может по разным причинам, как и программа Access, пропустить очередное значение.
Подстановки
Конструктор SQL Server лишен удобного мастера подстановки, который применяет программа Access. Вместо него вы должны выбрать поле, куда хотите поместить подстановку, щелкнуть кнопкой мыши вкладку Lookup (Подстановка) в нижней части окна конструктора (рис. 20.11) и затем заполнить все данные подстановки. Далее приведены ключевые параметры, необходимые для создания подстановки.
В поле параметра Display Control (Тип элемента управления) следует задать Combo Box (Поле со списком), раскрывающийся список, позволяющий выбрать нужное значение.
В поле параметра Row Source Type (Тип источника строк) нужно задать Tables/Views/Functions (Таблицы/представления/функции), если хотите создать подстановку, применяющую данные из связанной таблицы. (Если хотите предоставить просто список значений, можно использовать значение Value List (Список значений).)
Рис. 20.11. Подготовленная полностью подстановка для поля CreditCardID в таблице Orders
■ В поле параметра Row Source (Источник строк) указываются данные для подстановки. Если данные извлекаются из другой таблицы, применяется SQL-команда SELECT, которая извлекает два поля — поле с описательной информацией и поле со значением ID (Код). Например, можно использовать команду SELECT ID, ProductName FROM Products ORDER BY ProductName для создания отсортированного по названию товара списка подстановки, который получает ID и название каждого товара из таблицы Products.
Подсказка
Если вы не хотите писать оператор SELECT самостоятельно, щелкните кнопкой мыши в этом поле и затем щелкните мышью кнопку с многоточием, открывающую окно запроса, в котором можно выбрать таблицу и поля. Это окно запроса немного отличается от Конструктора запросов программы Access, который вы использовали до этого.
Параметр Bound Column (Связанный столбец) обозначает, какой столбец (из параметра Row Source (Источник строк)) должен быть добавлен в поле, когда выбрано значение из списка значений подстановки. Например, если первое поле в вашей команде SELECT — ID (как в предыдущем примере), нужно задать значение 1.
В параметре Column Count (Число столбцов) задается количество столбцов, отображаемых в списке подстановки. Обычно задается значение 2 (для отображения обоих столбцов), но ширина первого столбца с номером ID задается бесконечно малой, поэтому вы его практически не видите.
Параметр Column Heads (Заголовки столбцов) определяет, выводить ли заголовки в первой строке столбцов в списке подстановки. Обычно задается значение No (Нет). Однако если создается подстановка, отображающая несколько порций связанной информации, можно применить заголовки столбцов для того, чтобы легче было понять, что есть что, при просмотре списка подстановки.
Параметр Column Width (Ширина столбцов) задает ширину каждого столбца в списке подстановки. Каждое значение в дюймах отделяется точкой с запятой. Например, значение 0 ";1" скрывает из вида первый столбец и делает второй столбец шириной 1 дюйм.
К сожалению, создание подстановки не формирует связь между двумя таблицами. Если вы хотите создать отношение, необходимо сделать это самостоятельно, как описано в следующем разделе.
Примечание
Когда БД преобразуется, программе Access хватает изобретательности, чтобы сохранить все ваши подстановки.
Отношения
Как вы узнали в главе 5, у каждой заслуживающей уважения БД есть множество отношений, В программе Access существуют два способа быстрого построения отношения: с помощью схемы данных и созданием подстановки в поле. Но в проекте Access ни одно из этих средств не доступно. Вместо этого вам придется определять отношения вручную в окне Конструктора для вашей таблицы.
Вот как это делается.
1. Откройте подчиненную или дочернюю таблицу в Конструкторе.
У этой таблицы есть поле, связанное с родительской таблицей. (Например, Products — дочерняя таблица для ProductCategories. Поле ProductCategorylD — связующее звено, которое присутствует в таблице Products.)
2. Выберите на ленте Table Tools | Design → Show/Hide → Property Sheet (Работа с таблицами | Конструктор → Показать или скрыть → Страница свойств).
Это действие выводит на экран диалоговое окноProperties (Свойства) (рис. 20.12), которое выглядит совсем не так, как Property Sheet (Окно свойств), которое вы применяли раньше в БД Access.
Рис. 20.12. Показано установленное отношение, связывающее таблицу OrderDetails (как дочернюю) с таблицей Products (как родительской). В каждой записи таблицы OrderDetails поле ProductID указывает на заказанный товар
Щелкните кнопкой мыши вкладку Relationships (Схема данных).
Щелкните кнопкой мыши кнопку New (Создать) для определения нового отношения.
В списке, расположенном под заголовком Primary key table (Таблица первичного ключа), выберите родительскую таблицу.
В первой строке, расположенной под именем таблицы, выберите однозначно определенное поле в родительской таблице.
(В этой области вкладки есть несколько строк, поскольку можно создавать отношения, основанные на нескольких полях, хотя это делается редко.)
7. В списке, находящемся под заголовком Foreign key table (Таблица внешнего ключа), выберите дочернюю таблицу.
В первой строке, расположенной ниже, выберите поле в дочерней таблице, которое указывает на связанную родительскую запись.
8. Если хотите убедиться в том, что существующие данные удовлетворяют данному отношению, установите флажок Check existing data on creation (Проверять существующие данные при создании).
Если не хотите проверять имеющиеся записи на соответствие правилам данного отношения, не устанавливайте этот флажок. Если в вашей таблице еще нет данных, ваш выбор не играет роли.
9. Установите флажок Enforce relationships for INSERTS and UPDATES (Обеспечить отношение для INSERT и UPDATE), если хотите обеспечить ссылочную целостность при добавлении и изменении записей.
Это действие не позволит нарушать правила отношения при добавлении и редактировании записей. Например, будет запрещена вставка дочерней записи, указывающей на несуществующую родительскую запись. Если вы решите не применять ссылочную целостность, можно использовать один из вариантов, расположенных ниже, для переключения на каскадные обновления или удаления.
10. Когда закончите, закройте окно.