Хочется сделать взаимодействие 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
Где в проекте нужно создавать Connect к базе и Recordset
Модератор: Naeel Maqsudov
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте SashkO.Msk.
открывать соединение с БД достаточно один раз в начале работы приложения например при загрузке формы. Связь с источником данных до завершения работы лучше держать открытой, (если конечно соединение не будет мешать использованию общего ресурса другими пользователями), это сократит вреня доступа. Строку подключения удобнее использовать не расположенную в коде, а хранящуюся в UDL файле, это облегчит подключение к ситочнику данных и избавит от абсолютной адресной ссылки. Например в Вашем случае, используя приложение на другом компьютере, БД должна быть расположена так же "...\База данных\D&P.mdb". Настройка строки подключения с помощью UDL файла выполняется так:
создаете файл, задаете ему расширение "UDL", открываете его и ...
Для создания и открытия подключения к источнику данных может быть использована подобная процедура:Конечно объявление переменной производить на уровне его использующем (форма, модуль)
Это все 
Удачи Вам.
Евгений.
открывать соединение с БД достаточно один раз в начале работы приложения например при загрузке формы. Связь с источником данных до завершения работы лучше держать открытой, (если конечно соединение не будет мешать использованию общего ресурса другими пользователями), это сократит вреня доступа. Строку подключения удобнее использовать не расположенную в коде, а хранящуюся в 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

Удачи Вам.
Евгений.
-
- Сообщения: 3
- Зарегистрирован: 18 мар 2008, 22:15
Евгений, спасибо, дружищще! Выручил. И тебе успехов.