Честно, я искал по всему форуму, но, скорее всего, искал не то, поэтому и не нашел. Суть проблемы в следующем: есть база mdb (Access 2003), из VB6.0 через ADO я к ней подсоединяюсь и по результатам запроса заполняю TreeView. Собственно проблема:
- Код: Выделить всё
Set tvRS = New ADODB.Recordset
tvRS.Open "select * from _tblSysType order by name", gadoConnAsync ', adOpenDynamic, adLockOptimistic
tvRS.MoveFirst
With Me
While Not (tvRS.EOF)
Set tvAddedNode = .TreeView.Nodes.Add(, , , tvRS!Name) 'CStr(tvRS!id), tvRS!Name)
tvAddedNode.Tag = CStr(tvRS!id)
' пробую заполнить второй уровень, глубже уровней не будет.
Set tvRS_Sub = New ADODB.Recordset
tvRS_Sub.ActiveConnection = gadoConnAsync
' В следующей строке говорит ошибку синтаксиса.
' на _tblSysClass!ID
tvRS_Sub.Open "SELECT _tblSysClass!ID, _tblSysClass!Name, _tblSysType!Name " & _
"FROM _tblSysType " & _
"INNER JOIN _tblSysClass On _tblSysType!ID = _tblSysClass!lnk_tblSysTypeID" & _
"WHERE ((_tblSysClass!Name=" & tvAddedNode.Text & "));"
On Error Resume Next
While Not (tvRS_Sub.EOF)
Set tvAddedSubNode = .TreeView.Nodes.Add(, tvAddedNode, , tvRS_Sub!Name)
tvAddedSubNode.Tag = CStr(tvRS_Sub!id)
tvRS_Sub.MoveNext
Wend
tvRS_Sub.Close
Set tvRS_Sub = Nothing
'
tvRS.MoveNext
Wend
tvRS.Close
Set tvRS = Nothing
End With
Естественно, что сначала я построил запрос в Access'e - посмотреть, что и как. Код запроса в Access:
- Код: Выделить всё
SELECT [_tblSysClass].ID, [_tblSysClass].Name, [_tblSysType].Name
FROM _tblSysType INNER JOIN _tblSysClass ON [_tblSysType].ID = [_tblSysClass].lnk_tblSysTypeID
WHERE ((([_tblSysType].Name)="Тра-ля-ля"));
Я уж по всякому пробовал выкрутиться, но что-то никак WHERE победить мне не удается. Пожалуйста, ткните носом, где и что читать...