назад | содержание | вперед Совершенствование созданного компонента Несмотря на то, что созданный компонент потенциально может осуществлять доступ и управлять отображением любой таблицы из базы данных, он имеет ограничения в применении, поскольку имя обрабатываемой таблицы, имя сервера, имя базы данных, имя пользователя и его пароль зафиксированы внутри его кода. Чтобы снять эти ограничения, добавим нашему компоненту ownNavigator пять свойств: Server, Database, User, Password, Table. Public Property Let Server(ByVal newServer As String) mstrServer = newServer PropertyChanged "Server" End Property Public Property Get Server () As String Server = mstrServer End Property Public Property Let Database(ByVal newDatabase As String) mstrDatabase = newDatabase PropertyChanged "Database" End Property Public Property Get Database () As String Database = mstrDatabase End Property Public Property Let User(ByVal newUser As String) mstrUser = newUser PropertyChanged "User" End Property Public Property Get User() As String User = mstrUser End Property Public Property Let Password(ByVal newPassword As String) mstrPassword = newPassword PropertyChanged "Password" End Property Public Property Get Password() As String Password = mstrPassword End Property Public Property Let Table(ByVal newTable As String) mstrTable = newTable PropertyChanged "Table" End Property Public Property Get Table() As String Table = mstrTable End Property Для хранения значений этих свойств объявим пять строковых переменных. Dim rostrServer As String Dim mstrDatabase As String Dim mstrUser As String Dim mstrPassword As String Dim mstrTable As String Чтобы значения этих свойств можно бьыо настраивать в интегрированной среде разработки Visual Basic, необходимо также описать события Readproperties и Writeproperties. Для первичной инициализации значений этих свойств воспользуемся событием initproperties. Private Sub UserControl_ReadProperties(PropBag As PropertyBag) Server = PropBag.ReadProperty("Server", "") Database = PropBag.ReadProperty("Database", "") User = PropBag.ReadProperty("User", "") Password = PropBag.ReadProperty("Password", "") Table = PropBag.ReadProperty("Table", "") End Sub Private Sub UserControl Writeproperties(PropBag As PropertyBag) PropBag.WriteProperty "Server", Server, "" PropBag.WriteProperty "Database", Database, "" PropBag.WriteProperty "User", User, "" PropBag.WriteProperty "Password", Password, "" PropBag.WriteProperty "Table", Table, "" End Sub Private Sub UserControl Initproperties () Server = "" Database = "" User = "" Password = "" Table = "" End Sub Теперь надо изменить метод openRecordset следующим образом: Public Sub OpenRecordset() On Error.Goto err_occur If mcnnMain Is Nothing Then 'создаем Connection Set mcnnMain = New ADODB.Connection 'устанавливаем его параметры mcnnMain.CursorLocation = adUseClient mcnnMain.Provider = "SQLOLEDB.1" mcnnMain.CommandTimeout = 300 'строка для соединения, имя пользователя, пароль mcnnNain.Open "Data Source= " & Server & "; Initial Catalogs" & Database, User, Password End If If mrstMain Is Nothing Then 'создаем Recordset Set mrstMain = New ADODB.Recordset 'открываем Recordset mrstMain.Open Table, mcnnMain, adOpenKeyset, adLockOptimistic, adCmdTable If Not (mrstMain.BOF And mrstMain.EOF) Then mrstMain.MoveFirst End If Exit Sub err_occur: MsgBox "Ошибка при открытии базы данных." End Sub Здесь вместо фиксированных значений параметров открытия используются значения соответствующих свойств. Помимо этого добавлена обработка ошибок, которые могут возникать при открытии с неверными параметрами. Теперь вы можете использовать компонент ownNavigator для доступа к любым таблицам выбранной вами базы данных.
назад | содержание
| вперед
Поделитесь этой записью или добавьте в закладки |
Полезные публикации |