Ответ. • Вообще защиту базы, а именно, объектов и таблиц стандартными методами желательно не производить. Используйте, например, метод RSA для защиты данных в таблицах. • Рассмотрим другой вариант защиты, а именно, объектов базы данных и программного кода. Например, необходимо создать файл mdb, который можно было изменять пользователю, а некоторые программы из формы изменить было бы нельзя. В данном примере создается внешний класс для формы и размещается в mde файле, который используется как библиотека. • Применение класса выгодно также за счет экономии времени на разработку событий для стандартных кнопок: ОК, Отмена, Добавить, Печать и т.п. Если у Вас будет 5-10 форм это уже оправдывает создание класса и описание событий объектов. • Полный программный код дан в файле: la_prot1.mdb (см. пример 11 и класс: clsProtForm )
' Описание внутреннего класса для формы. Разместите его в вашей форме. Private mFrm As clsProtForm Private Sub Form_Open(Cancel As Integer) Set mFrm = New clsProtForm ' Создаем класс Set mFrm.Form = Me.Form ' Устанавливаем ссылку End Sub
' Это внешний класс для формы. Сохраните его в текстовом файле, а потом импортируйте из VBA. Обратите внимание на использование объектов c событиями, и именно, формы, кнопок и группы. Все события класса будут срабатывать ПОСЛЕ работы с пользовательским классом формы. VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "clsProtForm" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Compare Database Option Explicit ' Объекты с событиями Private WithEvents clsFrm As Form ' Форма класса Attribute clsFrm.VB_VarHelpID = -1 Private WithEvents butCancel As CommandButton ' Кнопка класса Attribute butCancel.VB_VarHelpID = -1 Private WithEvents GroupSelect As OptionGroup ' Группа Attribute GroupSelect.VB_VarHelpID = -1 ' Свойства форм Public Property Set Form(Value As Form) On Error GoTo 999 ' События для формы Set clsFrm = Value clsFrm.OnLoad = "[Event Procedure]" ' Событие для загрузки ' События для клавиш Set butCancel = clsFrm.Controls("butCancel") ' Ссылка на кнопку butCancel.OnClick = "[Event Procedure]" ' Устанавливаем событие ' События для переключателя Set GroupSelect = clsFrm.Controls("GroupSelect") ' Ссылка на группу GroupSelect.AfterUpdate = "[Event Procedure]" ' Устанавливаем событие Exit Property 999: MsgBox Err.Description Err.Clear End Property Public Property Get Form() As Form Set Form = clsFrm End Property ' События формы Private Sub clsFrm_Load() subProgress "clsFrm_Load" ' Загрузка End Sub ' События кнопок Private Sub butCancel_Click() subProgress "butCancel_Click" ' Нажатие кнопки отмена End Sub ' События группы Private Sub GroupSelect_AfterUpdate() subProgress "GroupSelect_AfterUpdate. Значение= " & clsFrm.Controls!GroupSelect End Sub ' Сообщение. Вывод данных в форму Public Sub subProgress(strMsg As String) clsFrm.Controls("Progress") = _ clsFrm.Controls("Progress") & "clsProtForm: " & strMsg & vbNewLine End Sub
|