Запрос к mdb из VB6.0

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kpblc
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 05.05.2006 (Пт) 15:42
Откуда: С.-Петербург

Запрос к mdb из VB6.0

Сообщение kpblc » 05.05.2006 (Пт) 16:06

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

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.05.2006 (Пт) 16:13

А собственно хотелось бы узнать, почему внизу в запросе мы видим точки, а вверху - восклицательные знаки?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

kpblc
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 05.05.2006 (Пт) 15:42
Откуда: С.-Петербург

Сообщение kpblc » 05.05.2006 (Пт) 16:39

То есть? И в VB-шном запросе тоже надо использовать "."?
Я более чем охотно сознаюсь, что ламер я ушастый, но... Я пробовал заменить "!" на ".", все равно выводит ошибку.
или надо еще и "[" "]" подставлять прямо как в Access?
---
Оффтоп: вот это оперативность! Спасибо.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 05.05.2006 (Пт) 16:46

и это надо заменить:

Код: Выделить всё
"WHERE ((_tblSysClass!Name=" & tvAddedNode.Text & "));"


на это:

Код: Выделить всё
" WHERE (([_tblSysClass].[Name]=""" & tvAddedNode.Text & """));"

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.05.2006 (Пт) 16:47

kpblc писал(а):То есть? И в VB-шном запросе тоже надо использовать "."?

Ну разумеется. И в любом запросе вообще.

kpblc писал(а):Я более чем охотно сознаюсь, что ламер я ушастый, но... Я пробовал заменить "!" на ".", все равно выводит ошибку.
или надо еще и "[" "]" подставлять прямо как в Access?

Необязательно, но можно.
Кавычки одинарные вокруг строки в запрос внедрённой не забыл? А зря, полезно их оставить на их месте...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

kpblc
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 05.05.2006 (Пт) 15:42
Откуда: С.-Петербург

Сообщение kpblc » 05.05.2006 (Пт) 16:53

Спасибо вам огромное! Я попробую, благодарю от всей души!
---
Добавлено: Попробовал, все отлично работает. Еще раз благодарю.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 93

    TopList  
cron