Обратиться в цикле к полям записи

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
PaNik

Обратиться в цикле к полям записи

Сообщение PaNik »

Суть: Сравниваем записи из идентичных по структуре баз.
Вопрос: Можно ли обратиться к полям записи не по имени, а по каким-либо индексам? Чтобы не перечислять все поля а запустить проверку в цикле. Как количество полей получить нашел, а вот как обратиться и тем более поменять значение - увы... :-(
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Сообщение Дед Пахом »

Сперва получаешь ссылки на записи этих файлов:
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)
С уважением, ДП
PaNik

Сообщение PaNik »

Спасибо! Буду разбираться...
iBAH
Бывалый
Сообщения: 56
Зарегистрирован: 14 Январь 2006, 13:44
Откуда: Ярославль
Контактная информация:

Сообщение iBAH »

Пример из хелпа(F1->GET)

Код: Выделить всё

LOOP I#=1 TO RECORDS(SomeFile)
  GET(SomeFile,I#) !по порядку заполнения
  !GET(SomePRE:NameKey,I#) !если хочешь в порядке по ключу
  IF ERRORCODE() THEN STOP(ERROR()).
  !делаешь все что надо 
  !записываешь
  PUT(SomeFile)
END 
PaNik

Сообщение PaNik »

iBAH писал(а):Пример из хелпа(F1->GET)
... Мне не по записям, а по полям. Но есть и положительное зерно - глянул в Хелп и натолкнулся на конструкцию GetField.. :-) Может и оттуда нарою...
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

ИМХО, Дед Пахом описал наилучшее и наиболее правильное решение, так что искать что-то дальше нет смысла.
Ответить