Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Про цикл рекордсетов / 4 сообщений из 4, страница 1 из 1
29.01.2008, 11:17
    #35093987
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про цикл рекордсетов
создаю в коде рекордсеты

Код: plaintext
1.
2.
dim rcd1 as new adodb.recordset
dim rcd2 as new adodb.recordset
dim rcd3 as new adodb.recordset

подскажите, как в цикле по ним пробежаться. т.е. из каждого надо взять recordcount.

пыталась:

Код: plaintext
1.
2.
3.
4.
5.
6.
for i= 1  to  3 
a=controls("rcd" & i).recordcount - не работает

еще так:

a = CallByName(Me, "rcd" & i, Vbget).RecordCount - тоже не работает.
next i

Заранее спасибо
...
Рейтинг: 0 / 0
29.01.2008, 11:25
    #35094020
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про цикл рекордсетов
Пробежаться циклом по переменным невозможно.
Выход такой:
Код: plaintext
1.
2.
3.
dim rcd( 1  to  3 ) As adodb.recordset
For x =  1  to  3  
    Set rcd(x) = New ADODB.Recordset
Next
...
Рейтинг: 0 / 0
29.01.2008, 11:45
    #35094123
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про цикл рекордсетов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Dim rcd1 As New ADODB.Recordset
Dim rcd2 As New ADODB.Recordset
Dim rcd3 As New ADODB.Recordset

'Стандартное решение:
Dim rsArr() As ADODB.Recordset

Private Sub Form_Initialize()
   ReDim rsArr( 1  To  3 )
   Set rsArr( 1 ) = rcd1
   Set rsArr( 2 ) = rcd2
   Set rsArr( 3 ) = rcd2
End Sub

Sub a()
   Dim i As Long, n As Long
   For i =  1  To  3 
      if rsArr(i).State = Adstateopen then n = n + rsArr(i).RecordCount
   Next
End Sub
Некрасивое и нехорошее решение:
Код: plaintext
1.
2.
3.
4.
5.
6.
public rcd1 as new adodb.recordset
public rcd2 as new adodb.recordset
public rcd3 as new adodb.recordset
'..
'..
a = CallByName(Me, "rcd" & i, Vbget).RecordCount 
'..
Нехорошее потому что программист вынужден соблюдать слишком жесткое соглашение об именовании переменных. А если кто-то другой работающий с вашим кодом добавит еще одну переменную rcd2_2? Или решит переименовать эти рекорсдеты во что-то внятное rsWares, rsProducts. Ваш код должен допускать возможность переименования переменных и не должен падать от этого.
...
Рейтинг: 0 / 0
03.02.2008, 17:17
    #35106788
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про цикл рекордсетов
Настенька
решается твоя проблема или проверкой на EOF для рекодсета в цикле DO while
или Rs.MoveNext(последняя запись) взять recordcount и Rs.MoveFirst вернутся на начало если нужно при условии что рекордсет не пустой
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Про цикл рекордсетов / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]