powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Позиционирование при перечитывании запроса и GridMode
84 сообщений из 84, показаны все 4 страниц
Позиционирование при перечитывании запроса и GridMode
    #39730390
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем гуру.

Продолжаю свою эпопею с юзанием GridMode режима у грида.
Совершенно запланировано столкнулся с проблемой позиционирования на гриде после перечитки запроса.
У меня реализован механизм выполнения запроса (сам запрос собирается динамически) с учетом пользовательских фильтров и сортировок. Все работает нормально, но есть нюансы. Один из них - после определенных действий вернуться на ту же запись в TableView. Заказчик хочет (и это вполне нормальное желание), чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие. И не просто переходить (в этом как раз проблемы нету), но чтобы на сетке сама запись оставалась на том же месте. Например, видимая часть TableView содержит 27 строк. Я стою на 20-й и хочу после совершения операции (которая вызывает перевыполнение запроса без изменений набора данных) снова видеть выделенной эту же строку на той же позиции в TableView. Вся проблема в том, что включен GridMode и параметры TopRowIndex и FocusedRowIndex зачастую отображают неверную информацию.
Почитал на форуме, но решения похожих проблем не нашел. Может у кого была такая же проблема, подскажите как выкрутиться из этой ситуации.
Заранее благодарю за дельные советы
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730395
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий,

для начала надобно свою же собственную тему "закрыть", написав, чем всё закончилось и какое было решение:
http://www.sql.ru/forum/1304358/sortirovka-i-gridmode
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730411
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий...столкнулся с проблемой позиционирования на гриде после перечитки запроса.
...вернуться на ту же запись в TableView. Заказчик хочет..., чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие...

Не выполнять "перечитку" запроса, если набор данных не менялся.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730414
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И пора бы уж познакомиться, что такое beginupdate/endupdate у гридов/трилистов девовских. Как раз для обновлений датасетов сделано, чтобы ничего вручную не надо было восстанавливать.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730471
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Загружайте запрос в какой-нибудь мемори-датасет (TdxMemData), к нему и привязан Грид. (можно использовать и не DBView)
2. После редактирования записи отправляете данные на сервер
3. Если сервер вернул ошибку, то отменяете редактирование.
И не нужно перечитывать данные и менять положение курсора в Гриде.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730473
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiЛеонов Юрий,

для начала надобно свою же собственную тему "закрыть", написав, чем всё закончилось и какое было решение:
http://www.sql.ru/forum/1304358/sortirovka-i-gridmode

Здесь решение еще не найдено, параллельно веду разработку. Поэтому писать пока нечего и закрывать соответственно рано
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730478
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраЛеонов Юрий...столкнулся с проблемой позиционирования на гриде после перечитки запроса.
...вернуться на ту же запись в TableView. Заказчик хочет..., чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие...

Не выполнять "перечитку" запроса, если набор данных не менялся.

Может неправильно выразился. Данные меняются. Не меняется порядок строк и количество их в наборе. Изменения могут проходить по полям, по которым нет сортировки и фильтрации
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730480
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr1. Загружайте запрос в какой-нибудь мемори-датасет (TdxMemData), к нему и привязан Грид. (можно использовать и не DBView)
2. После редактирования записи отправляете данные на сервер
3. Если сервер вернул ошибку, то отменяете редактирование.
И не нужно перечитывать данные и менять положение курсора в Гриде.

Это немного не то, при ошибке перечитка не происходит
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730489
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем вам перечитка, если данные не изменились
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730496
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr,

Я выше написал, неправильно выразился. Данные меняются, но по полям, которые не участвуют в сортировке и фильтрации
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730505
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для наглядности вот 2 изображения. На первом состояние до выполнения действия
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730507
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На втором - после совершения действия (проставили галочку)
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730514
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня возможны несколько вариантов:
искомая запись улетает на самый верх;
отображает правильно, но фокус становится на предпоследнюю запись;
фокус может стоять вообще на неизвестной записи.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730521
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы не будите перечитывать данные, то всё останется на месте (если фильтры удовлетворяют условию)
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730524
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий,

зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730530
JaDi-guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TobVisibleIndex нужен или т.п. -- точно что-то есть.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730555
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrЕсли вы не будите перечитывать данные, то всё останется на месте (если фильтры удовлетворяют условию)
Мне нужно перечитать эти данные, иначе как отобразятся изменения по действию
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730556
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi-guestTobVisibleIndex нужен или т.п. -- точно что-то есть.
Оно то есть, только совместно с GridMode=True не пашет
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730561
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраЛеонов Юрий,

зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи?
Нет, кроме конкретной не меняю, но изменения показать же нужно
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730567
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийМне нужно перечитать эти данные, иначе как отобразятся изменения по действию
Вы изменяете строку датасета в памяти и отсылаете запрос на сервер. Если сервер вернул Добро, то заканчивается редактирование клиентского датасета. Изменяется всего одна строчка и никакие данные перечитывать не нужно. Если сервер вернул Ошибку, то отменяется редактирование и опять же данные перечитывать не нужно.

Вы вообще как редактируете данные ?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730576
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrЛеонов ЮрийМне нужно перечитать эти данные, иначе как отобразятся изменения по действию
Вы изменяете строку датасета в памяти и отсылаете запрос на сервер. Если сервер вернул Добро, то заканчивается редактирование клиентского датасета. Изменяется всего одна строчка и никакие данные перечитывать не нужно. Если сервер вернул Ошибку, то отменяется редактирование и опять же данные перечитывать не нужно.

Вы вообще как редактируете данные ?
Редактирование осуществляется хранимой процедурой. Идет вызов, после которого обновление. На картинках частный случай, не стоит особо привязываться к ним
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730579
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Леонов Юрий,

А нельзя одну запись перечитать?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730588
Фотография Virtual Student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730603
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Virtual StudentТ.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант?
на второй картинке действие локейта. Они с первой отличаются?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730605
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийФэйтл ЭраЛеонов Юрий,

зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи?
Нет, кроме конкретной не меняю, но изменения показать же нужно
Если остальные записи не меняешь - зачем перечитываешь весь набор данных???
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730621
Фотография Virtual Student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийVirtual StudentТ.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант?
на второй картинке действие локейта. Они с первой отличаются?
Остается только фокус переместить на нужную запись.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730632
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Virtual StudentЛеонов Юрийпропущено...

на второй картинке действие локейта. Они с первой отличаются?
Остается только фокус переместить на нужную запись.
...а еще выполнить горизонтальный и вертикальный скроллинг в гриде, ага, с учетом сортировки и фильтрации...
Для чего вообще пероткрывать набор данных, что за странное желание делать ненужные вещи и после бороться с послествиями...
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730633
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Virtual StudentЛеонов Юрийпропущено...

на второй картинке действие локейта. Они с первой отличаются?
Остается только фокус переместить на нужную запись.

фокус и так на нужной, сама строка улетела. Я понятно говорю или не поймете чего я хочу добиться?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730634
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрийфокус и так на нужной, сама строка улетела. Я понятно говорю или не поймете чего я хочу добиться?
"...когда я отрубаю петуху голову, он не поёт. Надо, чтобы пел."
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730635
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраVirtual Studentпропущено...

Остается только фокус переместить на нужную запись.
...а еще выполнить горизонтальный и вертикальный скроллинг в гриде, ага, с учетом сортировки и фильтрации...
Для чего вообще пероткрывать набор данных, что за странное желание делать ненужные вещи и после бороться с послествиями...

Поставьте GridMode=True и вы поймете зачем. Не от хорошей жизни.

Если вы знаете правильный способ - поделитесь. Я же не утверждаю что изобрел новое колесо.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730641
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраЛеонов Юрийфокус и так на нужной, сама строка улетела. Я понятно говорю или не поймете чего я хочу добиться?
"...когда я отрубаю петуху голову, он не поёт. Надо, чтобы пел."

Задрачивать и я умею. Вы мне ни одного дельного совета не дали, только фигней страдаете. Вы ответ на мой вопрос знаете? Так поделитесь. А если нет, то нечего флудить.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730647
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы редактируете данные хранимой процедурой. Она вам и возвращает ответ произошло редактирование(сохранение) или нет.
Логично предполагаю, что данные редактируются в не DB контролах.
Я же вам предлагаю отвязаный датасет в памяти и DB-Контролы + редактирование хранимкой. Хранимка вернуда ДА - Post, НЕТ-Cancel. И никакого переоткрытия датасета.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730652
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для особо занудствующих и мучающихся вопросом "а зачем переоткрывать запрос?".
Представьте себе ситуацию, когда с одной формой работают одновременно несколько пользователей. Чисто теоретически.
Один что-то поменял, запустил для этих изменений другой процесс. Тут второй пользователь отмечает другие записи, чтобы совершить с ними какие-то действия. Для этого нужно учитывать статус записи и прочие настройки, потому как невовремя вызванная процедура может внести непоправимые изменения в базу. Вариантов дофигища.

Задан был вопрос как перейти на запись и возобновить положение в сетке. Но тут уже скатились до того "а зачем переоткрывать"...
Значит надо, без лишней надобности не стал бы делать это
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730654
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrВы редактируете данные хранимой процедурой. Она вам и возвращает ответ произошло редактирование(сохранение) или нет.
Логично предполагаю, что данные редактируются в не DB контролах.
Я же вам предлагаю отвязаный датасет в памяти и DB-Контролы + редактирование хранимкой. Хранимка вернуда ДА - Post, НЕТ-Cancel. И никакого переоткрытия датасета.

ХП может изменить значения нескольких полей, как тогда быть?
Не смотрите на пример, это частный случай
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730662
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийДля особо занудствующих и мучающихся вопросом "а зачем переоткрывать запрос?".
Представьте себе ситуацию, когда с одной формой работают одновременно несколько пользователей. Чисто теоретически.
Один что-то поменял, запустил для этих изменений другой процесс. Тут второй пользователь отмечает другие записи, чтобы совершить с ними какие-то действия. Для этого нужно учитывать статус записи и прочие настройки, потому как невовремя вызванная процедура может внести непоправимые изменения в базу. Вариантов дофигища.

Задан был вопрос как перейти на запись и возобновить положение в сетке. Но тут уже скатились до того "а зачем переоткрывать"...
Значит надо, без лишней надобности не стал бы делать это

То есть, никаких причин, чтобы переоткрывать - нет. Видишь, как все просто.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730664
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий...ХП может изменить значения нескольких полей, как тогда быть?
...
Перечитывай ОДНУ запись. Ту, которая изменялось. Одну - единственную.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730688
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Леонов ЮрийДля особо занудствующих и мучающихся вопросом "а зачем переоткрывать запрос?".
Представьте себе ситуацию, когда с одной формой работают одновременно несколько пользователей. Чисто теоретически.
Один что-то поменял, запустил для этих изменений другой процесс. Тут второй пользователь отмечает другие записи, чтобы совершить с ними какие-то действия. Для этого нужно учитывать статус записи и прочие настройки, потому как невовремя вызванная процедура может внести непоправимые изменения в базу. Вариантов дофигища.

Задан был вопрос как перейти на запись и возобновить положение в сетке. Но тут уже скатились до того "а зачем переоткрывать"...
Значит надо, без лишней надобности не стал бы делать это

Ещё и два человека могут "одновременно" одну запись пробовать редактировать...
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730691
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийХП может изменить значения нескольких полей, как тогда быть?
Тогда, по вашей же логике, что с одними данными работают несколько человек, вы никогда не сможете встать в то же место. Потому что того места попросту может уже не существовать.
Ваша цель спозиционироваться на редактируемой записи после переоткрытия запроса и не важно в каком виде будет грид.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730707
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраЛеонов Юрий...ХП может изменить значения нескольких полей, как тогда быть?
...
Перечитывай ОДНУ запись. Ту, которая изменялось. Одну - единственную.

КАКИМ ОБРАЗОМ??? В другом датасете одну запись открывать и потом подкидывать? Не понимаю...
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730711
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrЛеонов ЮрийХП может изменить значения нескольких полей, как тогда быть?
Тогда, по вашей же логике, что с одними данными работают несколько человек, вы никогда не сможете встать в то же место. Потому что того места попросту может уже не существовать.
Ваша цель спозиционироваться на редактируемой записи после переоткрытия запроса и не важно в каком виде будет грид.

Как раз важно. Цель такая: если изменение касалось не структуры данных, то позиционироваться нужно на то же самое место. Если набор изменился, тогда на эту же запись, пусть она стоит где угодно. А если в новом наборе нет этой записи, тогда идем на первую. По-моему, логично.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730764
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийФэйтл Эрапропущено...

Перечитывай ОДНУ запись. Ту, которая изменялось. Одну - единственную.

КАКИМ ОБРАЗОМ??? В другом датасете одну запись открывать и потом подкидывать? Не понимаю...
ХЗ, твои проблемы. Ты уперся в свой грид, про сервер и датасет не гу-гу.
...
В TIBDataSet, например, 5 sql предложений:

- select
- insert
- update
- delete
- refresh

Последнее (refresh) предложение - именно для перечитывания текущей записи:
Код: pascal
1.
 select a, b from tbl where id = :id


Вызывается автоматически, после любого изменения, и только для текущей строки.
И в TpFIBDataSet тоже такое есть.
...
Даже если твой датасет такого не умеет, можно запитать от инмемори датасета. А можно грид юзать в провайдер моде, и создать виртуальный источник данных.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730785
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраЛеонов ЮрийКАКИМ ОБРАЗОМ??? В другом датасете одну запись открывать и потом подкидывать? Не понимаю...
ХЗ, твои проблемы. Ты уперся в свой грид, про сервер и датасет не гу-гу.

Сервер - Oracle 11.2.0.4.0
TOraQuery из палитры компонент ODAC
Сам запрос перебирается динамически, все бинд-переменные заменяются значениями (была необходимость)
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730794
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийФэйтл Эрапропущено...

ХЗ, твои проблемы. Ты уперся в свой грид, про сервер и датасет не гу-гу.

Сервер - Oracle 11.2.0.4.0
TOraQuery из палитры компонент ODAC
Сам запрос перебирается динамически, все бинд-переменные заменяются значениями (была необходимость)
https://www.devart.com/odac/docs/devart.odac.toraquery.htm

В TOraQuery есть свойство RefreshSQL: https://www.devart.com/odac/docs/devart.dac.tcustomdadataset.sqlrefresh.htm

И метод RefreshRecord есть: https://www.devart.com/odac/docs/devart.dac.tcustomdadataset.refreshrecord().htm
Который может вызываться даже автоматически: https://www.devart.com/odac/docs/devart.dac.tcustomdadataset.refreshoptions.htm
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730805
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра https://www.devart.com/odac/docs/devart.odac.toraquery.htm

В TOraQuery есть свойство RefreshSQL: https://www.devart.com/odac/docs/devart.dac.tcustomdadataset.sqlrefresh.htm

И метод RefreshRecord есть: https://www.devart.com/odac/docs/devart.dac.tcustomdadataset.refreshrecord().htm
Который может вызываться даже автоматически: https://www.devart.com/odac/docs/devart.dac.tcustomdadataset.refreshoptions.htm
Это работает когда меняется гарантированно одна строка в наборе
А если за время, прошедшее с выборки уже были изменения по другим записям, тогда что? Они же не обновятся автоматом по изменению в БД? Или я неправ?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730814
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийФэйтл Эра https://www.devart.com/odac/docs/devart.odac.toraquery.htm

В TOraQuery есть свойство RefreshSQL: https://www.devart.com/odac/docs/devart.dac.tcustomdadataset.sqlrefresh.htm

И метод RefreshRecord есть: https://www.devart.com/odac/docs/devart.dac.tcustomdadataset.refreshrecord().htm
Который может вызываться даже автоматически: https://www.devart.com/odac/docs/devart.dac.tcustomdadataset.refreshoptions.htm
Это работает когда меняется гарантированно одна строка в наборе
А если за время, прошедшее с выборки уже были изменения по другим записям, тогда что? Они же не обновятся автоматом по изменению в БД? Или я неправ?

Конечно, не изменятся. Именно так и работают с датасетами в гридах: перечитывают только ту запись, с которой идет работа. Именно для этого сделаны специальный члены класса датасета - RefeshRecord и RefreshSQL.

Сделай кнопку: ОБНОВИТЬ. Если юзеру невмоготу - он воспользуется.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730819
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраКонечно, не изменятся. Именно так и работают с датасетами в гридах: перечитывают только ту запись, с которой идет работа. Именно для этого сделаны специальный члены класса датасета - RefeshRecord и RefreshSQL.
То есть если другой пользователь изменит данные я не узнаю об этом при перечитке только одной записи.
Это помогает в однопользовательской системе, мне такое не подходит
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730825
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий, да, порой приходится мутить свой датасет с инкрементальным рефрешем если готовых не найти под свои нужды
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730827
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийФэйтл ЭраКонечно, не изменятся. Именно так и работают с датасетами в гридах: перечитывают только ту запись, с которой идет работа. Именно для этого сделаны специальный члены класса датасета - RefeshRecord и RefreshSQL.
То есть если другой пользователь изменит данные я не узнаю об этом при перечитке только одной записи.
Это помогает в однопользовательской системе, мне такое не подходит

Глупый какой. Мало тебе датасета, который 7 минут открывается?

Ладно, вот тебе кактус:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var
  fBM: Pointer;
  fTRI: Integer;
begin

 fBM :=   Датасет.GetBookmark;
 fTRI :=  ЦэИксГридВью.Controller.TopRecordIndex;

 Датасет.CloseOpen

 Датасет.GotoBookmark(fBM);
 ЦэИксГридВью.Controller.TopRecordIndex := fTRI;
 
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39730946
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже много лет как сервермоде сделан в гриде, который умеет гораздо больше чем гридмоде... И способен обрабатывать многопользовательские коллизии
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731090
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что в прошлой теме, что в этой -- тестовое приложение надо делать, если на основном не получается повторить желаемого.

Вот минимальный код, который восстанавливает фокус и скрол (плюс скролит до записи, если она вне экрана оказалась) как в обычном режиме, так и в грид моде. Словно ничего и не обновлялось на экране у пользователя. Всякие проверки и ограничения автору уже самостоятельно надо написать:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var
  nextVisible: Integer;
  nextFocused: Integer;
begin
  nextVisible := cxGrid1DBTableView1.Controller.TopRecordIndex;
  nextFocused := cxGrid1DBTableView1.Controller.FocusedRecordIndex;

  // server changes simulate
  dxMemData1.Edit;
  dxMemData1.FieldByName('a').AsString := TimeToStr(Now);
  dxMemData1.Post;
  dxMemData1.SaveToTextFile('test.txt');
  dxMemData1.LoadFromTextFile('test.txt');

  // restore focus and scroll
  cxGrid1DBTableView1.Controller.FocusedRecordIndex := nextFocused;
  cxGrid1DBTableView1.Controller.TopRowIndex := nextVisible;
  cxGrid1DBTableView1.Controller.MakeFocusedRecordVisible;
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731093
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi,

опечатка, вот так в конце:
Код: pascal
1.
cxGrid1DBTableView1.Controller.TopRecordIndex := nextVisible;
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731541
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiJaDi,

опечатка, вот так в конце:
Код: pascal
1.
cxGrid1DBTableView1.Controller.TopRecordIndex := nextVisible;



Уже пробовал такое, при установке TopRecordIndex в датасете позиционирование идет на последнюю видимую в гриде запись, а это не то что нужно.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731542
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerУже много лет как сервермоде сделан в гриде, который умеет гораздо больше чем гридмоде... И способен обрабатывать многопользовательские коллизии

Для оракла не сделан сервермодный компонент. Можно конечно извратиться и по аналогии написать свой, но был опыт уже таких работ, именно с сервермодного режима на это и скатился
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731545
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраГлупый какой. Мало тебе датасета, который 7 минут открывается?

Ладно, вот тебе кактус:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var
  fBM: Pointer;
  fTRI: Integer;
begin

 fBM :=   Датасет.GetBookmark;
 fTRI :=  ЦэИксГридВью.Controller.TopRecordIndex;

 Датасет.CloseOpen

 Датасет.GotoBookmark(fBM);
 ЦэИксГридВью.Controller.TopRecordIndex := fTRI;



Во-первых, датасет открывается влет, за доли секунды
Во-вторых, этот пример тоже не работает как нужно. Позиционирование проходит правильно на запись, но сама запись относительно сетки грида съезжает вниз (опять становится на предпоследнюю запись)

Уже начинаю сомневаться, что что-то получится((
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731550
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийДля оракла не сделан сервермодный компонент.В смысле? В сервермоде с ораклом можно работать через FireDac, ADO, DBX/ Чем не устраивает?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731569
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийJaDiJaDi,

опечатка, вот так в конце:
Код: pascal
1.
cxGrid1DBTableView1.Controller.TopRecordIndex := nextVisible;



Уже пробовал такое, при установке TopRecordIndex в датасете позиционирование идет на последнюю видимую в гриде запись, а это не то что нужно.
РАБОТАЕТ. Корректно. Даже в грид моде. См. свой код, который где-то переоткрывает грид после восстановления фокуса. И восстановление надо делать уже после всех операций первооткрытия и EndUpdate'ов:

...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731639
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerЛеонов ЮрийДля оракла не сделан сервермодный компонент.В смысле? В сервермоде с ораклом можно работать через FireDac, ADO, DBX/ Чем не устраивает?
Пример работы с ODAC-овскими датасетами можете привести? Которые через Direct подключаются к БД?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731644
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiРАБОТАЕТ. Корректно. Даже в грид моде. См. свой код, который где-то переоткрывает грид после восстановления фокуса. И восстановление надо делать уже после всех операций первооткрытия и EndUpdate'ов:


у меня отработал нормально только если стою на первой условной странице данных или на второй. На всех остальных - проблема.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731695
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийПример работы с ODAC-овскими датасетами можете привести? Которые через Direct подключаются к БД?Third-party компоненты не поддерживаем, хотя если не ошибаюсь, был пример адаптера для Unidac-а. А что в ODAC для этого грида есть такого, чего нет в том же FireDac?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731703
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийJaDiРАБОТАЕТ. Корректно. Даже в грид моде. См. свой код, который где-то переоткрывает грид после восстановления фокуса. И восстановление надо делать уже после всех операций первооткрытия и EndUpdate'ов:


у меня отработал нормально только если стою на первой условной странице данных или на второй. На всех остальных - проблема.

На dxMemData работает, с TOraQuery - нет...
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731724
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийНа dxMemData работает, с TOraQuery - нет...

Хотя вру, работает... Походу наворотил в проекте лишнего, буду посмотреть.
Чуть позже отпишусь о результатах
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731727
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий,

хмм, действительно, при большом кол-ве данных на dxmem тоже не будет работать... Вот новый способ по сохранению и восстановлению данных с совсем другим подходом (через универсальные букмарки грида, работающие в любом режиме). Работает как в гриде моде, так и без него одинакового. Минимальный код (проверки при добавлении/удалении записей оставляю автору):

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure TForm16.cxButton2Click(Sender: TObject);
var
  difTopIndex: Integer;
begin
  cxGrid1DBTableView1.DataController.SaveBookmark;
  difTopIndex := cxGrid1DBTableView1.Controller.FocusedRecordIndex - cxGrid1DBTableView1.Controller.TopRecordIndex;

  // server changes simulate
  dxMemData1.Edit;
  dxMemData1.FieldByName('a').AsString := TimeToStr(Now);
  dxMemData1.Post;
  dxMemData1.SaveToTextFile('test.txt');
  dxMemData1.LoadFromTextFile('test.txt');

  // restore focus and scroll
  cxGrid1DBTableView1.DataController.GotoBookmark;
  cxGrid1DBTableView1.Controller.TopRowIndex := cxGrid1DBTableView1.Controller.FocusedRecordIndex - difTopIndex;
end;
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731761
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerЛеонов ЮрийПример работы с ODAC-овскими датасетами можете привести? Которые через Direct подключаются к БД?Third-party компоненты не поддерживаем, хотя если не ошибаюсь, был пример адаптера для Unidac-а. А что в ODAC для этого грида есть такого, чего нет в том же FireDac?
Оффтоп: вообще-то у одаков есть direct mode, который позволяет работать с базой напрямую без установки оракловского клиента одним экзешником (фаердак же требует установки клиента, который тянет за собой десятки файлов и кучу настроек). А вообще, тут ведь проблема в старом коде -- если есть проекты на одаках, то никто их просто так на фаердаки переписывать явно не будет.

Можно взять пример с того же FastReport'а -- который вместе с компонентами поставляет дополнительные адаптеры под те или иные базы/даки, и которые по желанию можно поставить.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731798
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure TForm16.cxButton2Click(Sender: TObject);
var
  difTopIndex: Integer;
begin
  cxGrid1DBTableView1.DataController.SaveBookmark;
  difTopIndex := cxGrid1DBTableView1.Controller.FocusedRecordIndex - cxGrid1DBTableView1.Controller.TopRecordIndex;

  // server changes simulate
  dxMemData1.Edit;
  dxMemData1.FieldByName('a').AsString := TimeToStr(Now);
  dxMemData1.Post;
  dxMemData1.SaveToTextFile('test.txt');
  dxMemData1.LoadFromTextFile('test.txt');

  // restore focus and scroll
  cxGrid1DBTableView1.DataController.GotoBookmark;
  cxGrid1DBTableView1.Controller.TopRowIndex := cxGrid1DBTableView1.Controller.FocusedRecordIndex - difTopIndex;
end;


для ODAC-овского датасета подошел вариант
Код: pascal
1.
2.
3.
4.
5.
6.
7.
var
  LBookMark: TBookmark;
begin
  LBookMark := cxGrid1DBTableView1.DataController.GetBookmark;
  ... 
  cxGrid1DBTableView1.DataController.GotoBookmark(LBookMark);
end;


Наверное для GridMode большой индекс топа не понятен, сваливался в начало
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731799
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий,

неправильно скопировал, вот так надо
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
procedure TForm1.btnReloadClick(Sender: TObject);
var
  difTopIndex: Integer;
  LBookMark: TBookmark;
begin
  LBookMark := oqMain.GetBookmark;
  difTopIndex := gdbbtvMain.Controller.FocusedRecordIndex - gdbbtvMain.Controller.TopRecordIndex;

  meLog.Lines.Add('===' + TimeToStr(Time) + '===');
  meLog.Lines.Add('TopRecordIndex=' + IntToStr(difTopIndex));
  meLog.Lines.Add('RecNo=' + IntToStr(oqMain.RecNo));
  meLog.Lines.Add('Refresh data...');

  // server changes simulate
  oqMain.Close;
  oqMain.Open;

  // restore focus and scroll
  oqMain.GotoBookmark(LBookMark);
  gdbbtvMain.Controller.TopRecordIndex := gdbbtvMain.Controller.FocusedRecordIndex - difTopIndex;
  //gdbbtvMain.Controller.MakeFocusedRecordVisible;

  meLog.Lines.Add('Date refreshed');
  meLog.Lines.Add('TopRecordIndex=' +
    IntToStr(gdbbtvMain.Controller.TopRecordIndex));
  meLog.Lines.Add('RecNo=' + IntToStr(oqMain.RecNo));
end;
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731802
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий,

потому что это разные закладки... Для фокуса есть универсальная SaveBookmark и Goto. В справке написано именно ее использовать.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731837
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий, в gridmode еще могут поджидать сюрпризы при попытке работать с (множественным) выделением записей и букмарками
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731892
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiЛеонов Юрий,

потому что это разные закладки... Для фокуса есть универсальная SaveBookmark и Goto. В справке написано именно ее использовать.Для сабжа букмарки неприменимы.

при любом апдейте данных может произойти:
* изменение значений полей как в текущей записи, так и в других.
* изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля.
* исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись.

Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключ.
Ну и проверка на то, был ли критичный апдейт, тогда переоткрытие может не понадобиться.
Если апдейт данных, это "удаление", то в некот. случаях можно виртуально удалить запись из датасета, не перечитывая заново весь датасет.
Это возможно в ФайрДАКе.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731900
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoДля сабжа букмарки неприменимы.

при любом апдейте данных может произойти:
* изменение значений полей как в текущей записи, так и в других.
* изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля.
* исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись.

Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключ.
И как же "память о ключе" спасет, например, от "исчезновения" по условиям фильтрации?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731954
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoДля сабжа букмарки неприменимы.

при любом апдейте данных может произойти:
* изменение значений полей как в текущей записи, так и в других.
* изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля.
* исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись.

Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключ.
Ну и проверка на то, был ли критичный апдейт, тогда переоткрытие может не понадобиться.
Если апдейт данных, это "удаление", то в некот. случаях можно виртуально удалить запись из датасета, не перечитывая заново весь датасет.
Это возможно в ФайрДАКе.
Ключ и так запоминаю. Модель такая:
1. Если установили пользовательский фильтр, то без вариантов переходим на первую запись в гриде
2. Если это первоначальное заполнение грида (открытие формы например), то тоже идем на первую запись
3. Если хотим обновить данные, то сохраняем позицию "до" и восстанавливаем ее "после" перечитки данных
4. При совершении каких либо операций над записью, пытаемся стать на нее. Если по условиям фильтрации или сортировки запись меняет свое расположение в наборе данных, то становимся на нее, не учитывая предыдущую позицию. Если при фильтрации этой записи в обновленном наборе нет, то идем на первую запись в гриде.

Как видите, ключ я использую.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731973
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий...
4. При совершении каких либо операций над записью, пытаемся стать на нее. Если по условиям фильтрации или сортировки запись меняет свое расположение в наборе данных, то становимся на нее, не учитывая предыдущую позицию. Если при фильтрации этой записи в обновленном наборе нет, то идем на первую запись в гриде.

...
Т.обр., после удаления текущей записи ты каждый раз переходишь на первую запись? Прэлестно.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731978
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoДля сабжа букмарки неприменимы.

при любом апдейте данных может произойти:
* изменение значений полей как в текущей записи, так и в других.
* изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля.
* исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись.

Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключТа не, это же вопрос реализации букмаркинга датасетом и вполне есть такие в к-х всяческие изменения позиций не страшны (и ключ может запоминаться)
но конечно с выбытием по условиям фильтрации особо ничего не поделаешь, не положено если показывать
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731992
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanL_argoДля сабжа букмарки неприменимы.

при любом апдейте данных может произойти:
* изменение значений полей как в текущей записи, так и в других.
* изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля.
* исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись.

Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключТа не, это же вопрос реализации букмаркинга датасетом и вполне есть такие в к-х всяческие изменения позиций не страшны (и ключ может запоминаться)
но конечно с выбытием по условиям фильтрации особо ничего не поделаешь, не положено если показывать

Вопрос вообще из серии "никакой", ТС сам себя напугал выдуманной проблемой и теперь героически ее преодолевает, непонятно для чего. Результат известен заранее: не он первый... :)
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731996
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраВопрос вообще из серии "никакой"я касательно "неприменимости" букмарков для сабжа, а этот вопрос вполне даже "какой". когда-то девэксы починили мне в частности B192042, но ряд траблов с gridmode и закладками таки помнится остался
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39731999
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan,
ОК, реализацию букмарков нужно смотреть по месту в каждом конкретном классе датасета, но обычно, если в данных есть за что зацепиться - проблем нет.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39732007
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраТ.обр., после удаления текущей записи ты каждый раз переходишь на первую запись? Прэлестно.
Подгорецкий в свое время давал пример НЕпользования закладками именно по причине их ненадежной валидности. И предлагал переходить на предыдущую запись по ID в случае удаления текущей между прочим :)
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39732023
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокФэйтл ЭраТ.обр., после удаления текущей записи ты каждый раз переходишь на первую запись? Прэлестно.
Подгорецкий в свое время давал пример НЕпользования закладками именно по причине их ненадежной валидности...
Еще раз: реализация букмарков зависит от конкретного датасета, надо смотреть.

Док...И предлагал переходить на предыдущую запись по ID в случае удаления текущей между прочим :)
Ну, это и обычный датасет при удалении делает, и на предыдущую не "по ID", а в соответсвии с текущим порядком следования записей.
И - ах и что же делать, если при удалении текущей записи удалится и предыдущая? Ну, триггеры так отработают, например. Или другие злобные юзеры. Хранить ID всех записей, нафсякей?
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39732028
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокПодгорецкий в свое время давал пример НЕпользования закладками именно по причине их ненадежной валидности. И предлагал переходить на предыдущую запись по ID в случае удаления текущей между прочим :)
Лучше на следующую. Переход назад озадачивает.
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39732031
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2ДокПодгорецкий в свое время давал пример НЕпользования закладками именно по причине их ненадежной валидности. И предлагал переходить на предыдущую запись по ID в случае удаления текущей между прочим :)
Лучше на следующую. Переход назад озадачивает.
Наверное, имелся в виду частный случай, когда удалялась последняя запись... :)
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39732139
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл ЭраИ - ах и что же делать, если при удалении текущей записи удалится и предыдущая?
а если электричество кончится?

Василий 2Лучше на следующую. Переход назад озадачивает.
3207043
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39732151
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокВасилий 2Лучше на следующую. Переход назад озадачивает.
3207043
Посмотрел пример. Locate-ом получается можем пробежать весь набор? У меня зачастую там по сотне тысяч записей может быть, представляю зависание...
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39732155
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiЛеонов Юрий,

потому что это разные закладки... Для фокуса есть универсальная SaveBookmark и Goto. В справке написано именно ее использовать.
Как бы там ни было, но мой вариант с закладками на датасете работает. Проверил по всем интересующим вариантам. Огромное спасибо JaDi за подсказанное направление!
Всем спасибо за обсуждение и предложения, буду наблюдать дальше поведение грида
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39732378
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрийпредставляю зависание...
А проверить? :)
...
Рейтинг: 0 / 0
Позиционирование при перечитывании запроса и GridMode
    #39732414
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,
проверял естественно.
...
Рейтинг: 0 / 0
84 сообщений из 84, показаны все 4 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Позиционирование при перечитывании запроса и GridMode
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]