подскажите по treeview

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

подскажите по treeview

Сообщение shady » 29.08.2006 (Вт) 19:46

Код: Выделить всё
Private Sub Form_Load()
    Dim strKey As String
    Dim strPKey As String
    Dim strChKey As String
   
    Call ConnectSQL(strLogin, strPassword, strDataSource)
   
    Set rstTransReg = New ADODB.Recordset
   
    Set rstTransTown = New ADODB.Recordset
   
    Set rstTransporter = New ADODB.Recordset
        rstTransporter.Open "SELECT ID, Name FROM Transporters", conn
   
    Do While Not rstTransporter.EOF
        strKey = rstTransporter("ID").Value
           
            ' добавляем корневые узлы
            tvTrans.Nodes.Add , , " & strKey & ", rstTransporter("Name").Value
               
                ' (регионы)
                rstTransReg.Open "SELECT DISTINCT Regions.Name, Regions.ID " _
                    & " FROM Towns INNER JOIN TransTown ON dbo.Towns.ID = TransTown.IDTown INNER JOIN " _
                    & " Transporters ON TransTown.IDTrans = Transporters.ID INNER JOIN " _
                    & " Regions ON Towns.IDReg = dbo.Regions.ID " _
                    & " WHERE TransTown.IDTrans=" & rstTransporter("ID").Value, conn
                   
            ' (регионы доставки)
            Do While Not rstTransReg.EOF
                strPKey = rstTransReg.Fields("ID") & " " & strKey
                tvTrans.Nodes.Add " & strKey & ", tvwChild, " & strPKey & ", rstTransReg("Name").Value
               
                ' выбираем города в этих регионах
                rstTransTown.Open "SELECT Towns.ID, Towns.Name " _
                    & "FROM Towns INNER JOIN TransTown ON Towns.ID = TransTown.IDTown INNER JOIN " _
                    & "Transporters ON TransTown.IDTrans = Transporters.ID INNER JOIN Regions ON " _
                    & "Towns.IDReg = Regions.ID WHERE Towns.IDreg=" & rstTransReg("id").Value & " AND Transporters.ID=" & rstTransporter("ID").Value, conn
                   
                    ' добавляем города
                    Do While Not rstTransTown.EOF
                        strChKey = rstTransTown("ID").Value & " " & strPKey
                        tvTrans.Nodes.Add " & strPKey & ", tvwChild, strChKey, rstTransTown("Name").Value
                        rstTransTown.MoveNext
                    Loop
                    rstTransTown.Close
                rstTransReg.MoveNext
            Loop
            rstTransReg.Close
        rstTransporter.MoveNext
    Loop
    rstTransporter.Close
End Sub


1 раз выполняется и на втором разе
Код: Выделить всё
tvTrans.Nodes.Add , , " & strKey & ", rstTransporter("Name").Value

говорит
Key is not unique in collectioms

хотя в первом случае strKey=1, во втором =2
что я делаю не так?

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 29.08.2006 (Вт) 19:49

Сделай strKey="Node_1", "Node_2" и т.д

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 29.08.2006 (Вт) 19:51

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


Может все таки просто strKey?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 29.08.2006 (Вт) 19:56

Но strKey, по-моему, не должно состоять только из цифр и strKey=1, =2 не прокатит

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 29.08.2006 (Вт) 20:00

сделал
Код: Выделить всё
strKey = "Node" & rstTransporter("ID").Value
            tvTrans.Nodes.Add , , strKey, rstTransporter("Name").Value

теперь на
Код: Выделить всё
' добавляем дочерние узлы (регионы доставки)
            Do While Not rstTransReg.EOF
                strPKey = rstTransReg.Fields("ID") & strKey
                tvTrans.Nodes.Add " & strKey & ", tvwChild, " & strPKey & ", rstTransReg("Name").Value

так говорит Element not found
а так:
Код: Выделить всё
tvTrans.Nodes.Add strKey, tvwChild, " & strPKey & ", rstTransReg("Name").Value

Key is not unique in collection

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 29.08.2006 (Вт) 20:02

и говорит это на первом "проходе"

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 29.08.2006 (Вт) 20:12

опять левые кавычки какие-то...

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 29.08.2006 (Вт) 20:20

:oops: действительно
только интересно почему первый раз вообще работало :)

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 29.08.2006 (Вт) 21:00

lister писал(а):Но strKey, по-моему, не должно состоять только из цифр и strKey=1, =2 не прокатит


Совершенно верно.

shady писал(а):только интересно почему первый раз вообще работало


Потому что первый раз ключ был задан как строка " & strKey & ".
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

zan
Бывалый
Бывалый
 
Сообщения: 224
Зарегистрирован: 24.08.2006 (Чт) 4:55

Сообщение zan » 30.08.2006 (Ср) 4:24

BV имел в виду следующее
tvTrans.Nodes.Add , , " & strKey & ", rstTransporter("Name").Value

tvTrans.Nodes.Add , , "key" & CStr(strKey), rstTransporter("Name").Value


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

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

Сейчас этот форум просматривают: Google-бот и гости: 126

    TopList