Если я второму полю присвою конкретное значение, то и встанет на именно ту запись (если найдет подобную).kreator писал(а): ↑20 Май 2022, 16:14 George, почему не почитать справку? Сделайте в очереди именованные поля. И тогда:Ещё можно сначала сделать set, потом один next.Код: Выделить всё
Que:Name = 'Smith' !Initialize the key fields Que:Zip = 12345 GET(NameQue,'FirstField,SecondField') !Get the matching record IF ERRORCODE() THEN STOP(ERROR()) END
Позиционирование в QUEUE
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Позиционирование в QUEUE
Позиционирование в QUEUE
1) Если четко определить и второе поле, то и встанет на такую запись (если найдет).kreator писал(а): ↑20 Май 2022, 16:14 George, почему не почитать справку? Сделайте в очереди именованные поля. И тогда:Ещё можно сначала сделать set, потом один next.Код: Выделить всё
Que:Name = 'Smith' !Initialize the key fields Que:Zip = 12345 GET(NameQue,'FirstField,SecondField') !Get the matching record IF ERRORCODE() THEN STOP(ERROR()) END
2) SET и NEXT для QUEUE?
Позиционирование в QUEUE
Этот вариант был бы хорош, если потом мне не нужно было бы все равно искать строку с наименьшей суммой.
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Позиционирование в QUEUE
Код: Выделить всё
KOL::Kod = 1
MAX::Kod = KOL::Kod
GET(Queue:Max,MAX::Kod)
MESSAGE(MAX::Summa) ! результат 50
Код: Выделить всё
KOL::Kod = 2
MAX::Kod = KOL::Kod
GET(Queue:Max,MAX::Kod)
MESSAGE(MAX::Summa) ! результат 12
С уважением, ДП
Позиционирование в QUEUE
К сожалению, я не понял Ваши примеры.Дед Пахом писал(а): ↑20 Май 2022, 17:10Код: Выделить всё
KOL::Kod = 1 MAX::Kod = KOL::Kod GET(Queue:Max,MAX::Kod) MESSAGE(MAX::Summa) ! результат 50
Код: Выделить всё
KOL::Kod = 2 MAX::Kod = KOL::Kod GET(Queue:Max,MAX::Kod) MESSAGE(MAX::Summa) ! результат 12
Общая задача такая - есть набор сумм, необходимо отобрать из этого набора 5 наибольших.
Естественно, первоначальный набор не упорядочен и не может быть упорядочен в принципе.
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Позиционирование в QUEUE
Это как раз Ваши примеры. Я заполнил очередь теми данными, что Вы привели, в том же порядке.
С уважением, ДП
Позиционирование в QUEUE
KOL::Kod = 1
MAX::Kod = KOL::Kod
GET(Queue:Max,MAX::Kod)
MESSAGE(MAX::Summa) ! результат 50
Нет, такой вариант не работает.
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Позиционирование в QUEUE
В Вашем варианте, по логике, встанет на первую попавшуюся запись с MAX::Kod = 1
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
Позиционирование в QUEUE
Напишите минимальную тестовую программу. У меня получилось 54 строчки считая пустые.
С уважением, ДП
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Позиционирование в QUEUE
Код: Выделить всё
form_r routine
DATA
lor:queue queue, pre()
lor:kod long
lor:sum real
.
CODE
lor:kod=1
lor:sum=100
add(lor:queue)
lor:kod=1
lor:sum=50
add(lor:queue)
lor:kod=2
lor:sum=100
add(lor:queue)
lor:kod=2
lor:sum=49.2
add(lor:queue)
lor:kod=2
lor:sum=50
add(lor:queue)
sort(lor:queue,lor:kod,lor:sum)
lor:kod=2
get(lor:queue,lor:kod)
stop(lor:sum)
C6/C11, ШВС, tps/btrieve.
- Дед Пахом
- Старичок
- Сообщения: 3135
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация: