- •Часть 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 2003 было средство, названное страницами доступа к данным и предназначенное для создания клиентской части БД в виде Web-страницы. Идея была замечательная — с помощью таких Web-страниц любой пользователь мог просматривать информацию в вашей БД или вносить в нее изменения, даже не имея программы Access.
К сожалению, у Access и Web натянутые отношения. Как вы уже знаете, программа Access может обрабатывать только ограниченное число одновременных обращений.
У Web-технологий нет таких ограничений. В действительности размещение БД в Интернете равносильно приглашению полчищ пользователей для попыток одновременного использования БД. По этой причине, как и по некоторым другим (например, трудность настройки страниц доступа к данным и отсутствие совместимости с другими обозревателями), корпорация Microsoft отказалась от этого средства в Access 2007.
Если вы все же хотите придать Web-обличье вашей БД, программа Access мало чем может помочь вам. Лучшим выбором будет перенос БД на серверный программный продукт, например SQL Server, и применение другого средства разработки для построения Web-страницы. Серьезные программисты любят ASP.NET (см. www.asp.net), единый комплект корпорации Microsoft для создания Web-сайтов, от простейших до самых сложных.
Многопользовательский доступ
Многопользовательский доступ — это вечное жонглирование. Если все пользователи хотят читать информацию, все просто. Но в тот момент, когда они захотят внести изменения, могут возникнуть серьезные проблемы. Например, что произойдет, когда два пользователя попытаются одновременно изменить одну и ту же запись? Или, когда вы пытаетесь изменить запись, кто-то еще старается ее удалить? Или же вы хотите прочесть свежие данные во время процесса обновления?
Ясно, что программе Access нужен способ управления хаосом. В этом разделе вы узнаете, что делает Access для того, чтобы все держать под контролем, и как можно регулировать этот процесс. Вы также научитесь предупреждать возникновение опасных ситуаций, способных привести к повреждению данных.
Как вносятся изменения
Представим себе следующий сценарий. Вы говорите по телефону с расточительным клиентом компании Boutique Fudge. Используя вашу надежную БД Access, вы просматриваете имеющиеся в наличии товары и сообщаете вашему клиенту цену каждого из них. А в это же время главный повар без вашего ведома просматривает ту же таблицу и повышает цены на самые популярные блюда. Возникает вопрос: когда вы заметите, что цены выросли?
Программа Access обрабатывает ситуации, подобные этой, с помощью автоматических обновлений. Каждые 60 секунд Access проверяет клиентскую БД, чтобы выяснить, что изменилось. Затем программа обновляет соответствующую информацию на вашем экране, если вы просматриваете форму, запрос или непосредственно таблицу. В примере с Boutique Fudge новые цены появятся после очередного обновления, выполняемого программой Access, но не позже 60 секунд, после внесения изменений.
Из правила обновления есть несколько исключений.
Когда начинается редактирование записи (щелчок кнопкой мыши в одном из полей), Access немедленно обновляет именно эту запись. Это действие гарантирует, что перед тем как вносить изменения, вы получите самую свежую копию записи.
Если вы не можете ждать 60 секунд и вас беспокоят возможные изменения с момента последнего обновления, можно запустить немедленное обновление с помощью команды Главная → Записи → Обновить все (Home → Records → Refresh All). Если щелкнуть
мышью часть кнопки команды с нарисованной стрелкой, направленной вниз, можно выбрать обновление только текущей записи, в которой находится курсор (выберите команду Обновить (Refresh) вместо команды Обновить все (Refresh All)).
■ В отчетах не применяется автоматическое обновление. Если вы формируете отчет, подождите, а затем решите, нужно ли обновлять результаты. У вас есть два варианта. Можно закрыть отчет и снова открыть его или использовать кнопку на ленте Обновить.
Если вам не нравится правило 60 секунд, можно настроить частоту повторения автоматических обновлений программой Access. Для этого выберите кнопку Office → Параметры Access (Office → Access Options). В окне Параметры Access выберите категорию параметров Дополнительно (Advanced) и прокручивайте перечень, пока не увидите параметр Период обновления (с) (Refresh interval (sec)) (рис. 18.9).
Рис. 18.9. Период обновления определяет, как часто программа Access проверяет в многопользовательской БД внесение изменений. Можно выбрать значение (в секундах) от 1 до 32 766
Примечание
Период обновления (с) — параметр программы Access, влияющий на все многопользовательские БД, открываемые на данном компьютере. Если вы хотите, чтобы все использовали одинаковый период обновления, необходимо, чтобы все пользователи обновили свои параметры Access.
Чем короче период обновления, тем быстрее вы увидите изменения, внесенные другими пользователями. Но укороченные интервалы обновления создают дополнительный трафик в вашей сети. Многие любители программы Access знают, что можно спокойно применять более короткий период обновления, если используется медленная сеть.
Обработка конфликтов редактирования
Многопользовательские БД — пример неограниченной свободы. Обычно программа Access не накладывает никаких ограничений на многопользовательские корректировки. Если повезет, пользователи будут вносить изменения в определенном порядке, один за другим. Но рано или поздно, изменения наложатся друг на друга и, возможно, с серьезными последствиями.
Далее приведен пример, показывающий, к чему приводит наложение изменений.
Вы открываете запрос, отображающий все товары в БД Boutique Fudge.
Ищите запись — самый хорошо продаваемый чизкейк с названием Chocolate Abyss, нуждающийся в изменении. Для того чтобы начать редактирование, вы щелкаете кнопкой мыши в поле Description.
В это же время Билл Эванс (Bill Evans) в отделе продаж запускает форму, которая тоже использует таблицу Products. Он добирается до той же самой записи и, догадываясь о возможности получений большей прибыли, начинает изменять цену. Теперь два пользователя работают одновременно с одной записью. Что произойдет дальше, зависит от того, кто первым зафиксирует свои изменения.
Допустим, что Билл выполнил свою работу первым. В мгновение ока он повысил цену и перешел к другой записи.
Вернемся к вашему компьютеру, вы закончили исправление поля Description и переходите к другой записи. Обычно в этот момент программа Access фиксирует ваши изменения, сохраняя их в серверной БД. Но в данном случае Access замечает противоречие — а именно, версия записи, с которой вы работаете, не совпадает с текущей версией записи в БД.
Access предупреждает вас о проблеме и предоставляет три возможных варианта ее ис правления (рис. 18.10).
Рис. 18.10. Между временем начала вашего редактирования и моментом внесения его в БД кто-то еще внес изменения. Программа Access разрешает выбрать вариант обработки возникшей конфликтной ситуации
Разрешить конфликтную ситуацию можно тремя способами.
Вариант Сохранить запись (Save Record) — самый легкий и самый опрометчивый. Если выбрать его, программа Access запишет вашу версию записи поверх имеющейся в БД. Проблема состоит в том, что этот вариант аннулирует изменения, сделанные другим пользователем. В предыдущем примере в БД будет сохранено новое описание товара, но потеряется изменение цены, поскольку Access запишет ее прежнее устаревшее значение.
ВариантОтменить изменения (Drop Changes) отменяет ваше редактирование. Access обновит запись и отобразит самую свежую информацию, а затем вы можете попытаться внести ваше изменение снова. Этот вариант заслуживает внимания, если вы легко сможете повторить редактирование, но его нельзя считать хорошим выбором, если вы только что закончили подробное обновление большого текстового поля.
Вариант Копировать в буфер (Copy to Clipboard), как и предыдущий вариант, отменяет ваше редактирование. Однако значения, которые вы изменили, копируются в буфер, что облегчит повторное их применение, как показано на рис. 18.11.
Рис. 18.11. Если результаты последнего редактирования скопированы в буфер, понадобятся два шага для повторного их внесения. Сначала вставьте их в другую программу (например, показанную здесь программу Word). Затем выделите данные, которые хотите использовать, и снова скопируйте их в буфер с помощью комбинации клавиш <Ctrl>+<C>. И, наконец, перейдите в окно программы Access к полю, которое хотите изменить, и вставьте новое значение, нажав комбинацию клавиш <Ctrl>+<V>
Обычно лучше всего копировать в буфер и пытаться повторить редактирование. К сожалению, людей невозможно заставить поступать правильно. Ленивые работники могут выбрать более быстрый вариант Сохранить запись, который незаметно уничтожит чью-то работу. Хуже всего, что у пользователя, выполнившего изменение первым, нет возможности узнать, что его работа пошла насмарку. Если у вас в организации много накладывающихся корректировок, придется потратить много времени на обучение персонала правилам поведения при обработке подобных ситуаций.
Примечание
Любители Access часто говорят о том, что им хотелось бы иметь возможность объединять изменения, т. е. обновлять только те поля, которые менялись. В предыдущем примере такая возможность позволила бы применить новое описание поля без повреждения изменения цены, сделанного предыдущим пользователем, поскольку оба обновления воздействуют на разные поля. Но программа Access не предоставляет такого варианта. Одна из причин — отсутствие возможности проверить непротиворечивость обоих изменений. Нет ничего хуже записи, противоречащей самой себе.