Вопрос: Можно ли обратиться к полям записи не по имени, а по каким-либо индексам? Чтобы не перечислять все поля а запустить проверку в цикле. Как количество полей получить нашел, а вот как обратиться и тем более поменять значение - увы...
Обратиться в цикле к полям записи
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
PaNik
Обратиться в цикле к полям записи
Суть: Сравниваем записи из идентичных по структуре баз.
Вопрос: Можно ли обратиться к полям записи не по имени, а по каким-либо индексам? Чтобы не перечислять все поля а запустить проверку в цикле. Как количество полей получить нашел, а вот как обратиться и тем более поменять значение - увы...
Вопрос: Можно ли обратиться к полям записи не по имени, а по каким-либо индексам? Чтобы не перечислять все поля а запустить проверку в цикле. Как количество полей получить нашел, а вот как обратиться и тем более поменять значение - увы...
- Дед Пахом
- Старичок
- Сообщения: 3366
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 20 раз
- Поблагодарили: 56 раз
- Контактная информация:
Сперва получаешь ссылки на записи этих файлов:
gr1 &GROUP
gr2 &GROUP
gr1 &= File1{prop:record}
gr2 &= File2{prop:record}
field1 ANY
field2 ANY
LoopIndex LONG,AUTO
потом в цикле проходишься по полям
LoopIndex=1
LOOP
field1 &= WHAT(gr1,LoopIndex)
IF field1 &= NULL
BREAK
END
field2 &= WHAT(gr2,LoopIndex)
IF field2 &= NULL
BREAK
END
!теперь сравнение содержимого
IF field1 <> field2
field2=field1
END
!следующее поле
LoopIndex+=1
END
!тут мы оказались, когда прошлись по всем полям одной записи
!можем обновить один из файлов
PUT(field2)
gr1 &GROUP
gr2 &GROUP
gr1 &= File1{prop:record}
gr2 &= File2{prop:record}
field1 ANY
field2 ANY
LoopIndex LONG,AUTO
потом в цикле проходишься по полям
LoopIndex=1
LOOP
field1 &= WHAT(gr1,LoopIndex)
IF field1 &= NULL
BREAK
END
field2 &= WHAT(gr2,LoopIndex)
IF field2 &= NULL
BREAK
END
!теперь сравнение содержимого
IF field1 <> field2
field2=field1
END
!следующее поле
LoopIndex+=1
END
!тут мы оказались, когда прошлись по всем полям одной записи
!можем обновить один из файлов
PUT(field2)
С уважением, ДП
-
iBAH
- Бывалый
- Сообщения: 56
- Зарегистрирован: 14 Январь 2006, 13:44
- Откуда: Ярославль
- Контактная информация:
Пример из хелпа(F1->GET)
Код: Выделить всё
LOOP I#=1 TO RECORDS(SomeFile)
GET(SomeFile,I#) !по порядку заполнения
!GET(SomePRE:NameKey,I#) !если хочешь в порядке по ключу
IF ERRORCODE() THEN STOP(ERROR()).
!делаешь все что надо
!записываешь
PUT(SomeFile)
END
-
PaNik
