Где в проекте нужно создавать Connect к базе и Recordset

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
SashkO.Msk
Сообщения: 3
Зарегистрирован: 18 мар 2008, 22:15

Хочется сделать взаимодействие TreeView и базы Access. Дерево-то я заполнил значениями из базы, а вот не пойму как должно работать событие tvwTREE_NodeClick: при выделении мышкой Node я хочу присвоить другим Контролам на форме (например, Label, TextBox, Grid и т. д.) соответствующие значения или посчёты значений из базы.
Я ещё пока чайничек в VB и не пойму где создать подключение к базе, т. к. рекордсэт, да и вообще подключение к базе в событии Form_Load не сохранилось.
Вообщем ВОПРОС такой: каким образом и где (в каком событии) создать подключение и как сделать чтоб оно не уничтожилось по завершении этого события?

Вот моё NodeClick, и происходит оно с заметной задержкой, т. к. при каждом клике на Node создаётся подключение.

Private Sub tvwUnits_NodeClick(ByVal Node As MSComctlLib.Node)
сmdAccess = "Provider=microsoft.jet.oledb.3.51;data source=..\База данных\D&P.mdb"
Set cn = New ADODB.Connection
cn.Open (сmdAccess)

If Node.Key Like "*" Then
idx = Right(Node.Key, Len(Node.Key) - 1)

sqlUchastki = "select * from Uchastki where UchastokID = " & idx
Set rsUchastki = New ADODB.Recordset
rsUchastki.Open sqlUchastki, cn, adOpenStatic, adLockOptimistic

lblSelNode.Caption = rsUchastki("Uchastok")
Set rsUchastki = Nothing
End If

If Node.Key Like "[s]*" Then
idx = Right(Node.Key, Len(Node.Key) - 1)

sqlStoyanki = "select * from Stoyanki where StoyankaID = " & idx
Set rsStoyanki = New ADODB.Recordset
rsStoyanki.Open sqlStoyanki, cn, adOpenStatic, adLockOptimistic

lblSelNode.Caption = rsStoyanki("StoyankaNomer") & " - " &_ rsStoyanki("Ulitsa") & ", " & rsStoyanki("Dom") & rsStoyanki("Primechaniye")
Set rsStoyanki = Nothing
End If
Set cn = Nothing
End Sub
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте SashkO.Msk.
открывать соединение с БД достаточно один раз в начале работы приложения например при загрузке формы. Связь с источником данных до завершения работы лучше держать открытой, (если конечно соединение не будет мешать использованию общего ресурса другими пользователями), это сократит вреня доступа. Строку подключения удобнее использовать не расположенную в коде, а хранящуюся в UDL файле, это облегчит подключение к ситочнику данных и избавит от абсолютной адресной ссылки. Например в Вашем случае, используя приложение на другом компьютере, БД должна быть расположена так же "...\База данных\D&P.mdb". Настройка строки подключения с помощью UDL файла выполняется так:
создаете файл, задаете ему расширение "UDL", открываете его и ...
Для создания и открытия подключения к источнику данных может быть использована подобная процедура:

Код: Выделить всё

Public Function CheckConn() As Boolean
On Error Resume Next
Err.Clear
Dim s$
s = App.Path & "\DB.udl"
If Dir(s) = "" Then Exit Function
Set cn = New Connection
cn.ConnectionString = "FILE NAME=" & s
cn.Open
If Err.Number = 0 Then CheckConn = True
End Function
Конечно объявление переменной производить на уровне его использующем (форма, модуль)

Код: Выделить всё

Public cn As Connection
Это все ;)
Удачи Вам.
Евгений.
SashkO.Msk
Сообщения: 3
Зарегистрирован: 18 мар 2008, 22:15

Евгений, спасибо, дружищще! Выручил. И тебе успехов.
Ответить