Практическая работа 4
Тема: Работа приложений пользователя с базой данных на файловом сервере.
Введение
Access позволяет работать с базой данных в многопользовательском режиме, предпологающем работу многих пользователей компьютерной сети с общей базой данных.
Наиболее распространенными в настоящее время являются локальные сети, основанные на концепции файлового сервера. Примерами сетевой операционной системы, поддерживающей эту концепцию, являются Novell NetWare и Windows NT Server. При этом один компьютер в сети выделяется в качестве файлового сервера, а все остальные являются рабочими станциями, имеющими доступ к его ресурсам. Сервер обеспечивает функционирование сети. На его дисках размещаются файлы СУБД и общей базы данных, доступные со всех рабочих станций сети. Размещение СУБД на диске файлового сервера позволяет хранить одну копию установленной системы управления базами данных. Выполняется СУБД на каждой рабочей станции. Можно хранить распределенную БД на любом выделенном компьютере одноранговой сети.
База данных со всеми объектами Access должна размещаться в рсапределенной папке на диске сервера.
При коллективном доступе к данным все пользователи могут работать с таблицами, формами, отчетами и другими объектами общей базы данных Access. При этом несколько пользователей могут одновременно просматривать и обновлять базу данных, решая задачи приложения на своей рабочей станции.
Работа с приложением пользователя в сети начинаетсч с запуска на рабочей станции. Общая база данных открывается в монопольном режиме или в режиме общего доступа в соответствии с установленными параметрами в меню Сервис/Параметры...
Можно изменить режим доступа к общей базе данных при ее открытии.
Режим монопольного доступа. Для того чтобы открыть базу данных для монопольного доступа, надо выбрать из списка опцию Монопольно (Exclusive).
Режим монопольного доступа запрещает другим пользователям и программам доступ к этой базе данных. База данных, открытая одним пользователем в монопольном режиме, недоступна для открытия другими пользователями.
Монопольный доступ для общей базы данных должен устанавливаться, если необходимо провести такие работы, как изменение структуры БД, ввода большого объема данных, сжатие базы данных или ее восстановление после повреждения. Монопольный доступ, как правило, устанавливается администратором базы данных.
Чтобы многие пользователи могли одновременно работать с приложением, ни один из них не должен открывать базу данных в режиме монопольного доступа.
Режим общего доступа. Для того чтобы открыть базу данных в режиме общего доступа, надо выбрать из списка строку Открыть (Open). Этот же режим выбирается, если не открывая списка, нажать кнопку Открыть.
Режим общего доступа обеспечивает коллективное использование объектов базы данных как в режиме чтения, так и в режиме обновления. Несколько пользователей могут одновременно открывать одну базу данных в режиме общего доступа. Причем для некоторых из них доступ может ограничиваться только чтением.
Для того чтобы открыть базу данных в режиме только для чтения, надо выбрать режим Открыть для чтения (Open Read-Only) или Монопольно для чтения (Open Exclusive Read-Only). При открытии базы данных в этом режиме выдается сообщение.
В этом режиме недоступны все операции по изменению объектов базы данных. Например, в открытой таблице базы данных нет строки новой записи, заблокированы изменения в полях, а в меню Правка (Edit) не видны строки удаления записей.
Если база данных открыта в режиме общего доступа даже только для чтения, другие пользователи не могут открыть ее для монопольного использования. При попытке пользователя открыть базу данных в монопольном режиме ему предоставляется только режим общего доступа. При этом выдается сообщение.
Монопольный доступ предоставляется пользователю только в случае, если сбазой данных не работает ни один из пользователей. Если некоторому пользователю предоставлен монопольныйдоступ к базе данных, другие не смогут открыть этуже базу данных.
Замечание.
Режим доступа, используемый при открытии базы данных по умолчанию, устанавливается в окне Параметры (Options)на вкладке Другие (Advanced). Окно открывается командой меню Сервис/Параметры(Tools/Options...).
Для того чтобы база данных по умолчанию открывалась для коллективного доступа, параметр Режим открытого доступа (Default Open Mode) должен иметь значение Общий доступ (Shared). Для применения заданных параметров и закрытия окна диалога надо нажать на кнопку ОК.
В режиме общего доступа данные будут доступны пользователям для оновременного просмотра, ввода и обновления данных. Access вносит изменения в базу данных сразу же после перехода к другой записи или при выполнений команды сохранить. Однако попытки одновременного изменения одних и тех же данных разными пользователями могу привести к конфликту. Например, при попытке одновременно изменить запись нельзя предсказать, какие изменения будут произведены, а какие потеряны. Для предотвращения подобных ситуаций необходимо, чтобы в конкретный момент времени только один пользователь мог вносить изменения в используемые записи.
Для защиты совместно используемых данных Access предоставляет различные методы блокировки данных на время их изменения пользователем.
Задание параметров блокировки записи.
Параметры блокировки записи можно установить пользователем, макросом или программой Visual Basic в свойствах форм, отчетов и запросов.
Замечание для Запроса блокировка устанавливается в окне свойств запроса на вкладке Общие (General), а для Отчета в окне свойств отчета на вкладке Другие (Other).
В формах это свойство определяет способы блокировки записей в базовой таблице при обновлении содержимого общей базы данных, а также в результирующей таблице запроса, на котором построена форма.
В отчетах это свойство определяет, блокируются ли записи в базовой таблице или запросе, на которых построен отчет, при печати или просмотре отчета.
В запросах это свойство определяет, блокируются ли записи в таблице запроса при выполнении запроса на добавление, на удаление, на создание таблицы или на обновление.
Свойство Блокировка записей (Record Locks) может принимать одно из трех значений:
В отчетах записи не блокирубтся при выводе на просмотр или на печать.
В запросах записи не блокируются при выполнении запроса на изменение.
В формах допускается одновременное изменение записи двумя или несколькими пользователями. Если два пользователя пытаются сохранить изменения одной записи, Access выводит предупреждабщее сообщение тому из пользователей, кто сохраняет запись вторым. Этот пользователь может сохранить свой вариант записи, уничтожив изменения, внесеныые другим пользователем; скопировать свою измененную запись в буфер обмена или отказаться от собственных изменений. Данное значение позволяет изменять записи в любое время, но при внесении изменений разными пользователями могут возникать конфликты.
Другим пользователям разрешается просматривать записи, но они не могут изменять, добавлять или удалять любые записи до закрытия первым пользователем формы, до завершения этим пользователем печати отчета или до завершении запроса. Блокировка всей записи является блокировкой таблицы.
Замечание. Access 2000 дополнительно к блокировке страничного уровня поддерживает блокировку на уровне единственной записи. Выбор режима блокировки на уровне записи в текущей базе данных производится параметром Блокировка записи при открытии базы данных (Open databases using record level locking) на вкладке Другие (команда Сервис/Параметры/Другие Tools/Options/Advanced). Этот вид блокировки накладывает минимальные ограничения и позволяет многим пользователям работать в режиме обнавления данных. Если этот параметр не выбран, по умолчанию будет использоваться блокировка на уровне страницы.
В режимах формы и таблицы при попытке изменить значения в заблокированном другим пользователем записи в области выделения записи отображается символ блокировки.
ЗАДАНИЕ. Выполните редактирование записи 3, установив на эту запись блокировку.
В сети нескольким пользователям часто приходится приходится работать с одними и теми же записями. Для того чтобы обеспечить использование последней версии данных, надо обновлять отображение данных на экран.
Отображение последней версии данных. выводимых в форму или другой объект в режиме таблицы, может производиться командой Записи/Обновить (Records/Refresh). Если за время до обновления отображения какая-либо из выведенных записей была удалена другим пользователем, Access выведет в каждом из полей этой записи значение ошибки -"#Удалено".
Символы, выводимые в области маркировки
записей, указывают текущее состаяние записей.
Символ
указывает, что запись является
текущей; изменения вней не вносились. Символ
указывает, что запись была
изменена , но изменения еще не сохранены. Если
запись заблокирована, другие пользователи не
имеют возможности изменять ее и видеть внесенные
изменения. Для того чтобы сделать запись
доступной для других пользователей, следует либо
сохранить изменения. либо отменить их. Символ
указывает. что запись блокирована другим
пользователем. В нее нельзя вносить изменеия. При
попытке ввода данных в блокированную запись Access
подает звуковой сигнал.
При обновлении отображения данных в текущей форме или другом объекте в режиме таблицы Access показывает изменения сделанные другими пользователями в пролях записей, но не изменяет порядок записей, не добавляет записи и не убирает удаленные. Для того чтобы увидеть добавленные записи и убрать удаленные, следует выполнить закрытие и повторное открытие формы или дркгого объекта в режиме таблицы.
В Access предусматривает автоматическое обновление через определенные промежутки времени отображения записей, просматриваемых в форме или другом объектк в режиме таблицы. Частота обнавления определяется настройкой интервала обновления. Для изменения этой велечены следует:
При одновременной работе нескольких пользователей с одно базой данных каждый из них получает свою копию всех форм, отчетов, модулей и других объектов. Изменение объектов, внесенные пользователем, станут доступные другим пользователям только после того, как они закроют и снова откроют базу данных.
Объект в режиме конструктора могут одновременно редактировать несколько пользователей, но при сохранении объекта, который уже изменен другим пользователем, будет выданно сообщение о том, что со времени открытия базы данных объект был изменен. При этом предоставляется возможность либо переписать объект, т.е. записать собственную версию, либо сохранить собственную версию по другим именем.
При коллективной работе в сети разрешается изменять большенство объектов базы данных так же, как и при мономольном доступе к базе данных. Исключением являются таблицы, которые не возможно открыть в режиме конструктора, если с ним работают другие пользователи.
Если хотя бы один пользователь открыл таблицу или просматривает данные в запросах, формах или отчетах, для которых эта таблица является базовой, изменять структуру этой таблицы друним пользователям нельзя. Появится сообщение, что таблица доступна только для чтения.
Поскольку никто не может просматривать данные из таблицы, открытой некоторым пользователем в режиме конструктора, рекомендуется открывать таблицу в режиме конструктора только на необходимое время.
Несмотря на то, что изменения объектов базы данных во время работы с ней других пользователей допускается, лучше создать объекты большенства объектов базы данных до ее открытия для коллективной работы.
При внесениии существенных изменений в макет рекомендуется исключить доступ к базе данных других пользователей, установив при ее открытии режим Монопольно (Exclusive) в окне диалога Открытие файла базы данных (Open).
При внесении изменений в запрос, форму или отчет одним пользователем, другие пользователи могут получить последнюю версию объекта, только закрыв объект и вновь открыв его. Выполнять обновление процедуры Function или Sub , входящие в модули Visual Basic, другие пользовавтели смогут также, только закрыв и вновь открыв базу данных.
Операция сохранения измененного макроса во время его выполнения другим пользователем может привести к ошибкам при выполнении. Во избежании этого рекомендуется перед изменением макроса открывать базу данных для монопольного доступа.
Помимо рассматриваемого варианта, когда все объекты базы данных, в том числе таблицы с данными, хранятся в одном файле и используются совместно, возможен вариант отдельного хранения таблиц на сервере, а других объектов у каждого пользователя.
Разделение существующей базы данных на таблицы и объекты позволяет хранить все таблицы в одном файле БД на файловом сервере, а формы, отчеты и другие объекты - в другом файле базы данных, копии которой могут быть у всех пользователей общей БД.
Разделения базы данных на два файла, в одном из которых содержаться таблицы, а в другом запросы, формы, отчеты, макросы и модули, позволяет пользователям, имея доступ к общему источнику данных, создавать свои собственные формы, отчеты и другие объекты.
Базу данных можно разделить на две части командой Разделение баз данных (Database Splitter) меню Сервис/Служебные программы (Tools/Utillites). Мастер по разделению баз данных в диалоге с использователем выполняет все необходимые действия.