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