Удаление записи из BROWSE

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Удаление записи из BROWSE

Сообщение Игорь Столяров »

Привет всем !

Что-то я подвис, хотя вроде бы задача простая. :(

- Если удалять одну запись из BROWSE штатной операцией DELETE (из шаблона), то после удаления
список обновляется и засветка списка аккуратно становится на следующую запись.

- Если удалять запись вручную, с обновлением списка - то после удаления записи эту засветку непредсказуемо
кидает то на начало, то на хвост списка (видимо зависит от текущей сортировки).

Подскажите пжалуйста, как нужно обновлять список BROWSE после удаления записи, что бы он вёл себя пристойно ?
Заранее спасибо ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Удаление записи из BROWSE

Сообщение kreator »

А как Вы удаляете вручную? По-моему SELF.ResetQueue(Reset:Queue) не должен приводить к таким последствиям. Во всяком случае, в класах SV так.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Удаление записи из BROWSE

Сообщение Игорь Столяров »

Я удаляю конкретно ! :)
Т.е. по нажатию кнопы выполняю DELETE(MyFile) и потом изменяю значение флага,
который есть в списке Reset Fields для BROWSE … может я здесь в чём-то был не прав ?
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Удаление записи из BROWSE

Сообщение kreator »

Зачем? Удаляете запись и выполняете:

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

BRWx.ResetQueue(Reset:Queue)
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Удаление записи из BROWSE

Сообщение Игорь Столяров »

Неа ! Всё равно кидает засветку на верхнюю запись в списке. :(
Как я понимаю - нужно получать номер следующей записи в QUEUE списка и делать её текущей после удаления.
Только кто же её знает какая из них следующая …
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Удаление записи из BROWSE

Сообщение kreator »

Уберите Reset Field. Всё портит, похоже. Попробую тест у себя прогнать. Не верится. В классах именно так написано.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Удаление записи из BROWSE

Сообщение kreator »

У меня вот так работает правильно:

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

get(BRW1.Q, choice(?List))
SPRAV.ID_SPR = BRW1.Q.SPR:ID_SPR
Relate:SPRAV.Delete()
BRW1.ResetQueue(Reset:Queue)
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Удаление записи из BROWSE

Сообщение gopstop2007 »

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

BRW1.ResetQueue(Reset:Queue)
тоже будет прыгать
самое оно )

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

BRW1.ResetFromBuffer
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Удаление записи из BROWSE

Сообщение Игорь Столяров »

gopstop2007 писал(а): 23 Июль 2019, 9:10BRW1.ResetFromBuffer
Не, ну так это же совсем другое дело ! Спасибо ! Теперь всё правильно. :)

:ty:
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Удаление записи из BROWSE

Сообщение kreator »

Почему у меня не прыгает? Из-за драйвера? Из-за сортировки? В ResetFromBuffer вот такое, правда:

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

SELF.ResetQueue(Reset:Done)
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Удаление записи из BROWSE

Сообщение Игорь Столяров »

kreator писал(а): 23 Июль 2019, 11:40Почему у меня не прыгает?
У Вас же работа с SQL драйвером, а не ISAM ...
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Удаление записи из BROWSE

Сообщение kreator »

Игорь Столяров писал(а): 23 Июль 2019, 12:15 У Вас же работа с SQL драйвером, а не ISAM ...
И что? Скорее всего, есть какие-то отличия. Даже просто может быть в настройках броуза. Я, например, всегда использую "File Loading". Может сортировка виновата. У меня всегда используется уникальный ключ. Теоретически разница в поведении между ISAM и SQL должна быть.
We are hard at work… for you. :)
Ответить