RUS  ENG 

Цикл в макросе

Страницы: 1
RSS
Цикл в макросе, верхняя граница for
 
Здравствуйте.
В вашем примере https://politerm.com/samples/zulugis/macros/WriteLatLonVbs/
цикл for ограничен числом существующих объектов "To Keys.Count", а не максимальным значением ключа, ведь освободившиеся sys не используются повторно.
Как быть если объекты были нанесены и удалены в последствии?
Если можно чуть подробнее, только начал осваивать макросы и vbs мой первый опыт.
Заранее благодарю.
Изменено: Jounts - 07.08.2017 01:05:23
 
В примере работа идет с существующими объектами. Коллекция ElementKeys содержит список ключей существующих объектов. Ключ равен не значению индекса i, а значению элемента коллекции по этому индексу Item (i )
Т.е. спиок ключей может быть совсем не подряд по порядку (1 123 1678 3451 и т.д.)
 
Алексей Аширов, не совсем понял. Т.е. цикл будет выполняттся до последнего ключа, а не до значения суммы ключей?
 
Сколько объектов в слое, столько и ключей в коллекции (count - число объектов в слое для Layer.ElementKeys) Сами значения ключей роли не играют. Какие есть, такие есть. Ключ - просто идентификатор объекта. По полученному ключу получаем его объект.
Иными словами, цикл выполняется от первого до последнего объекта.
 
Подскажите пожалуйста, как реализовать цикл по столбцам таблицы?
 
Sub ReadTable

Set Out = OpenOutputChannel ("Сообщения")

Out.Clear

Set Map = Zulu.ActiveMapDoc

Set L = Map.Layers.Active

'Создали объект база данных
Set Db = CreateObject("zb.database")

'Открыли базу данных для типа 6 (участок)
Db.Open L.ObjectTypes.Item(6).BaseName


Set Ds = Db.SelectAll

'Встали на первую запись
Ds.MoveFirst

cnt = Ds.FieldCount

'Выводим имена полей
For i = 0 To cnt - 1

If i > 0 Then S = S + ","

S = S + Ds.GetFieldInfo(i).Name

Next

S = S + Chr(10)

Out.Put S

'Выводим значения полей по всем записям
Do

'Если дошли до конца, выходим из цикла
If Ds.EOF = True Then Exit Do

S = ""

For i = 0 To cnt - 1

If i > 0 Then S = S + ","

S = S + Ds.FieldValue(i)

Next

S = S + Chr(10)

Out.Put S

Ds.MoveNext

Loop


End Sub
Страницы: 1