назад | содержание | вперед
Совершенствование созданного компонента
Несмотря на то, что созданный компонент потенциально может осуществлять доступ и управлять отображением любой таблицы из базы данных, он имеет ограничения в применении, поскольку имя обрабатываемой таблицы, имя сервера, имя базы данных, имя пользователя и его пароль зафиксированы внутри его кода. Чтобы снять эти ограничения, добавим нашему компоненту 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 для доступа к любым таблицам выбранной вами базы данных.
назад | содержание | вперед