powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как правильно написать цикл
17 сообщений из 17, страница 1 из 1
Как правильно написать цикл
    #36111279
user999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть 10 лейблов. Нужно расположить их определенным образом.
Расположение нужно сделать в цикле. Выдает ошибку. Не могу в цикле написать названия объектов (Н-р: N1, N2, N3)
Вот код, пробовал разными способами:
Код: plaintext
1.
2.
3.
4.
5.
6.
For i =  1  To  10 
    Вариант1: N(i).Top =  400 
    Вариант2: N & i.Top =  400 
    Вариант3: M = N & i или N(i)
                   M.Top =  400 
Next i
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36111289
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно из лейблов сделать массив, присвоив им одинаковое имя.

Jah loves you.
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36111313
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На форме 3 Label и 2 кнопки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Option Explicit

Private Sub Command1_Click()
Dim i As Long
For i =  1  To  3 
    With Me.Controls("Label" & CStr(i))
        .Top =  500  * i
        .Left =  100 
    End With
Next i
End Sub

Private Sub Command2_Click()
Dim i As Long
Dim lab( 1  To  3 ) As Label
Set lab( 1 ) = Me.Label1
Set lab( 2 ) = Me.Label2
Set lab( 3 ) = Me.Label3

For i =  1  To  3 
    With lab(i)
        .Top =  750  * i
        .Left =  1000 
    End With
Next i
End Sub

Можно ещё и с TypeOf поигратся, вообщем есть где развернутся :)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36112544
user999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Игорь Горбонос

Вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim i As Long
For i =  1  To  3 
    With Me.Controls("Label" & CStr(i))
        .Top =  500  * i
        .Left =  100 
    End With
Next i

То что надо. Спасибо
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36113168
user999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу еще раз помочь.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim i As Long
For i =  1  To  3 
    With Me.Controls("Label" & CStr(i))
        .Top =  500  * i
        .Left =  100 
    End With
Next i
 
Как присвоить названия? .Caption =
Вставляю в цикл запрос типа:
strSQL = "SELECT Группы.[НаименованиеГруппы] AS [Группа] FROM [Группы] ORDER BY [НаименованиеГруппы];"
G = CurrentProject.Connection.Execute(strSQL).Fields(0)
.Caption = G

Естественно все надписи с первым значением из запроса.
Как изменить запрос?
LIMIT в Access не работает
В PHP можно было бы G сделать массивом.

Как в VBA не знаю.
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36113325
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user999LIMIT в Access не работает
В PHP можно было бы G сделать массивом.
Вместо LIMIT используется Top
Select Top 10 ...



По поводу "можно было бы G сделать массивом" смотрите в хелпе метод GetRows
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36115239
user999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что тот не получается:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
For i =  1  To R
Dim rs As DAO.Recordset
Dim strSQL As String
Dim MyArray As Variant
strSQL = "SELECT Группы.[НаименованиеГруппы] FROM [Группы];"
Set rs = CurrentDb.OpenRecordset(strSQL)
MyArray = rs.GetRows()

MsgBox MyArray(i,  0 )
Next i
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36115274
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что вы внутрь цикла то засунули и объявления и выборку данных?
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36115284
user999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да без разницы, можно и так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim rs As DAO.Recordset
Dim strSQL As String
Dim MyArray As Variant
strSQL = "SELECT Группы.[НаименованиеГруппы] FROM [Группы];"
Set rs = CurrentDb.OpenRecordset(strSQL)
MyArray = rs.GetRows()

For i =  1  To R
MsgBox MyArray(i,  0 )
Next i
Все равно ошибка
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36115308
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user999Все равно ошибка

Блин! ошибка в 17 строке!
Какая ошибка? может выход за границы массива , может пустой рекордсет, может вообще при выполнении запроса что-то происходит.
Текст ошибки можно взять в окне Immedate набрав следующий текст: ? err.description и нажав на Ентер. Окно Immedate можно вызвать нажав Ctrl+G или в меню View пункт Immedate Window.

З.Ы. И без текста ошибки не приходите
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36115321
user999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Subscript out of range
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36115379
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
For i =  1  To R
MsgBox MyArray(i,  0 )
Next i

что такое R? где она у вас задается?

напишите так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
If IsArray(MyArray) Then
For i = LBound(MyArray) To UBound(MyArray)

...

Next i
End if
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36115514
user999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает только так:

Код: plaintext
1.
MsgBox MyArray( 0 ,  0 )
или
Код: plaintext
1.
MsgBox MyArray(i, i)
где i начинается с 0

Выводит первое значение из массива, а потом выдает ошибку (когда в цикле i становится = 1)

Т.е. вывести поочереди все значения массива не получается
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36115630
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: user999
> Работает только так:

Значит у вас двухмерный массив с одной строкой
> Выводит первое значение из массива, а потом выдает ошибку (когда в цикле i становится = 1)

Естественно, потому, что пытаетесь вывести содержимое массива с координатами 1,1 а если там одна строка, получаете
ошибку выхода за границы массива.
Код: plaintext
1.
2.
3.
4.
5.
Dim i As Long, j As Long
For i = LBound(MyArray,  1 ) to UBound(MyArray,  1 )
       For j = LBound(MyArray,  2 ) To UBound(MyArray,  2 )
              MsgBox MyArray(i, j)
       Next j
Next i

> Т.е. вывести поочереди все значения массива не получается
;)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36116875
user999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос,

Все равно выводит только значение первой строки, а в таблице их 7.
Таблица состоит из 2-х полей: Код и НаименованиеГруппы. Заполнено 7 строк.

Неужели у Вас работает написанный Вами код, а у меня нет. Казалось бы простая задача.
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36116937
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
................................
Set rs = CurrentDb.OpenRecordset(strSQL)
rs.MoveLast: rs.MoveFirst
MyArray = rs.GetRows(rs.RecordCount)
...............................
...
Рейтинг: 0 / 0
Как правильно написать цикл
    #36116962
user999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, загвоздка была в
MyArray = rs.GetRows()

нужно было

MyArray = rs.GetRows(R)

где R количество строк в запросе
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как правильно написать цикл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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