|
|
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Добрый день всем гуру. Продолжаю свою эпопею с юзанием GridMode режима у грида. Совершенно запланировано столкнулся с проблемой позиционирования на гриде после перечитки запроса. У меня реализован механизм выполнения запроса (сам запрос собирается динамически) с учетом пользовательских фильтров и сортировок. Все работает нормально, но есть нюансы. Один из них - после определенных действий вернуться на ту же запись в TableView. Заказчик хочет (и это вполне нормальное желание), чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие. И не просто переходить (в этом как раз проблемы нету), но чтобы на сетке сама запись оставалась на том же месте. Например, видимая часть TableView содержит 27 строк. Я стою на 20-й и хочу после совершения операции (которая вызывает перевыполнение запроса без изменений набора данных) снова видеть выделенной эту же строку на той же позиции в TableView. Вся проблема в том, что включен GridMode и параметры TopRowIndex и FocusedRowIndex зачастую отображают неверную информацию. Почитал на форуме, но решения похожих проблем не нашел. Может у кого была такая же проблема, подскажите как выкрутиться из этой ситуации. Заранее благодарю за дельные советы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 11:14 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, для начала надобно свою же собственную тему "закрыть", написав, чем всё закончилось и какое было решение: http://www.sql.ru/forum/1304358/sortirovka-i-gridmode ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 11:20 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий...столкнулся с проблемой позиционирования на гриде после перечитки запроса. ...вернуться на ту же запись в TableView. Заказчик хочет..., чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие... Не выполнять "перечитку" запроса, если набор данных не менялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 11:31 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
И пора бы уж познакомиться, что такое beginupdate/endupdate у гридов/трилистов девовских. Как раз для обновлений датасетов сделано, чтобы ничего вручную не надо было восстанавливать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 11:35 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
1. Загружайте запрос в какой-нибудь мемори-датасет (TdxMemData), к нему и привязан Грид. (можно использовать и не DBView) 2. После редактирования записи отправляете данные на сервер 3. Если сервер вернул ошибку, то отменяете редактирование. И не нужно перечитывать данные и менять положение курсора в Гриде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:23 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDiЛеонов Юрий, для начала надобно свою же собственную тему "закрыть", написав, чем всё закончилось и какое было решение: http://www.sql.ru/forum/1304358/sortirovka-i-gridmode Здесь решение еще не найдено, параллельно веду разработку. Поэтому писать пока нечего и закрывать соответственно рано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:26 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраЛеонов Юрий...столкнулся с проблемой позиционирования на гриде после перечитки запроса. ...вернуться на ту же запись в TableView. Заказчик хочет..., чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие... Не выполнять "перечитку" запроса, если набор данных не менялся. Может неправильно выразился. Данные меняются. Не меняется порядок строк и количество их в наборе. Изменения могут проходить по полям, по которым нет сортировки и фильтрации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:28 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBr1. Загружайте запрос в какой-нибудь мемори-датасет (TdxMemData), к нему и привязан Грид. (можно использовать и не DBView) 2. После редактирования записи отправляете данные на сервер 3. Если сервер вернул ошибку, то отменяете редактирование. И не нужно перечитывать данные и менять положение курсора в Гриде. Это немного не то, при ошибке перечитка не происходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:29 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Зачем вам перечитка, если данные не изменились ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:35 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBr, Я выше написал, неправильно выразился. Данные меняются, но по полям, которые не участвуют в сортировке и фильтрации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:39 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Для наглядности вот 2 изображения. На первом состояние до выполнения действия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:50 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
На втором - после совершения действия (проставили галочку) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:51 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
У меня возможны несколько вариантов: искомая запись улетает на самый верх; отображает правильно, но фокус становится на предпоследнюю запись; фокус может стоять вообще на неизвестной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:55 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Если вы не будите перечитывать данные, то всё останется на месте (если фильтры удовлетворяют условию) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:02 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:05 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
TobVisibleIndex нужен или т.п. -- точно что-то есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:15 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBrЕсли вы не будите перечитывать данные, то всё останется на месте (если фильтры удовлетворяют условию) Мне нужно перечитать эти данные, иначе как отобразятся изменения по действию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:54 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDi-guestTobVisibleIndex нужен или т.п. -- точно что-то есть. Оно то есть, только совместно с GridMode=True не пашет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:55 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраЛеонов Юрий, зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи? Нет, кроме конкретной не меняю, но изменения показать же нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:57 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийМне нужно перечитать эти данные, иначе как отобразятся изменения по действию Вы изменяете строку датасета в памяти и отсылаете запрос на сервер. Если сервер вернул Добро, то заканчивается редактирование клиентского датасета. Изменяется всего одна строчка и никакие данные перечитывать не нужно. Если сервер вернул Ошибку, то отменяется редактирование и опять же данные перечитывать не нужно. Вы вообще как редактируете данные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:07 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBrЛеонов ЮрийМне нужно перечитать эти данные, иначе как отобразятся изменения по действию Вы изменяете строку датасета в памяти и отсылаете запрос на сервер. Если сервер вернул Добро, то заканчивается редактирование клиентского датасета. Изменяется всего одна строчка и никакие данные перечитывать не нужно. Если сервер вернул Ошибку, то отменяется редактирование и опять же данные перечитывать не нужно. Вы вообще как редактируете данные ? Редактирование осуществляется хранимой процедурой. Идет вызов, после которого обновление. На картинках частный случай, не стоит особо привязываться к ним ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:19 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, А нельзя одну запись перечитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:24 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Т.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:31 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Virtual StudentТ.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант? на второй картинке действие локейта. Они с первой отличаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:41 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийФэйтл ЭраЛеонов Юрий, зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи? Нет, кроме конкретной не меняю, но изменения показать же нужно Если остальные записи не меняешь - зачем перечитываешь весь набор данных??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:42 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийVirtual StudentТ.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант? на второй картинке действие локейта. Они с первой отличаются? Остается только фокус переместить на нужную запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:56 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Virtual StudentЛеонов Юрийпропущено... на второй картинке действие локейта. Они с первой отличаются? Остается только фокус переместить на нужную запись. ...а еще выполнить горизонтальный и вертикальный скроллинг в гриде, ага, с учетом сортировки и фильтрации... Для чего вообще пероткрывать набор данных, что за странное желание делать ненужные вещи и после бороться с послествиями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:02 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Virtual StudentЛеонов Юрийпропущено... на второй картинке действие локейта. Они с первой отличаются? Остается только фокус переместить на нужную запись. фокус и так на нужной, сама строка улетела. Я понятно говорю или не поймете чего я хочу добиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:03 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрийфокус и так на нужной, сама строка улетела. Я понятно говорю или не поймете чего я хочу добиться? "...когда я отрубаю петуху голову, он не поёт. Надо, чтобы пел." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:05 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраVirtual Studentпропущено... Остается только фокус переместить на нужную запись. ...а еще выполнить горизонтальный и вертикальный скроллинг в гриде, ага, с учетом сортировки и фильтрации... Для чего вообще пероткрывать набор данных, что за странное желание делать ненужные вещи и после бороться с послествиями... Поставьте GridMode=True и вы поймете зачем. Не от хорошей жизни. Если вы знаете правильный способ - поделитесь. Я же не утверждаю что изобрел новое колесо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:06 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраЛеонов Юрийфокус и так на нужной, сама строка улетела. Я понятно говорю или не поймете чего я хочу добиться? "...когда я отрубаю петуху голову, он не поёт. Надо, чтобы пел." Задрачивать и я умею. Вы мне ни одного дельного совета не дали, только фигней страдаете. Вы ответ на мой вопрос знаете? Так поделитесь. А если нет, то нечего флудить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:10 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Вы редактируете данные хранимой процедурой. Она вам и возвращает ответ произошло редактирование(сохранение) или нет. Логично предполагаю, что данные редактируются в не DB контролах. Я же вам предлагаю отвязаный датасет в памяти и DB-Контролы + редактирование хранимкой. Хранимка вернуда ДА - Post, НЕТ-Cancel. И никакого переоткрытия датасета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:15 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Для особо занудствующих и мучающихся вопросом "а зачем переоткрывать запрос?". Представьте себе ситуацию, когда с одной формой работают одновременно несколько пользователей. Чисто теоретически. Один что-то поменял, запустил для этих изменений другой процесс. Тут второй пользователь отмечает другие записи, чтобы совершить с ними какие-то действия. Для этого нужно учитывать статус записи и прочие настройки, потому как невовремя вызванная процедура может внести непоправимые изменения в базу. Вариантов дофигища. Задан был вопрос как перейти на запись и возобновить положение в сетке. Но тут уже скатились до того "а зачем переоткрывать"... Значит надо, без лишней надобности не стал бы делать это ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:20 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBrВы редактируете данные хранимой процедурой. Она вам и возвращает ответ произошло редактирование(сохранение) или нет. Логично предполагаю, что данные редактируются в не DB контролах. Я же вам предлагаю отвязаный датасет в памяти и DB-Контролы + редактирование хранимкой. Хранимка вернуда ДА - Post, НЕТ-Cancel. И никакого переоткрытия датасета. ХП может изменить значения нескольких полей, как тогда быть? Не смотрите на пример, это частный случай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:22 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийДля особо занудствующих и мучающихся вопросом "а зачем переоткрывать запрос?". Представьте себе ситуацию, когда с одной формой работают одновременно несколько пользователей. Чисто теоретически. Один что-то поменял, запустил для этих изменений другой процесс. Тут второй пользователь отмечает другие записи, чтобы совершить с ними какие-то действия. Для этого нужно учитывать статус записи и прочие настройки, потому как невовремя вызванная процедура может внести непоправимые изменения в базу. Вариантов дофигища. Задан был вопрос как перейти на запись и возобновить положение в сетке. Но тут уже скатились до того "а зачем переоткрывать"... Значит надо, без лишней надобности не стал бы делать это То есть, никаких причин, чтобы переоткрывать - нет. Видишь, как все просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:26 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий...ХП может изменить значения нескольких полей, как тогда быть? ... Перечитывай ОДНУ запись. Ту, которая изменялось. Одну - единственную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:28 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийДля особо занудствующих и мучающихся вопросом "а зачем переоткрывать запрос?". Представьте себе ситуацию, когда с одной формой работают одновременно несколько пользователей. Чисто теоретически. Один что-то поменял, запустил для этих изменений другой процесс. Тут второй пользователь отмечает другие записи, чтобы совершить с ними какие-то действия. Для этого нужно учитывать статус записи и прочие настройки, потому как невовремя вызванная процедура может внести непоправимые изменения в базу. Вариантов дофигища. Задан был вопрос как перейти на запись и возобновить положение в сетке. Но тут уже скатились до того "а зачем переоткрывать"... Значит надо, без лишней надобности не стал бы делать это Ещё и два человека могут "одновременно" одну запись пробовать редактировать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:38 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийХП может изменить значения нескольких полей, как тогда быть? Тогда, по вашей же логике, что с одними данными работают несколько человек, вы никогда не сможете встать в то же место. Потому что того места попросту может уже не существовать. Ваша цель спозиционироваться на редактируемой записи после переоткрытия запроса и не важно в каком виде будет грид. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:40 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраЛеонов Юрий...ХП может изменить значения нескольких полей, как тогда быть? ... Перечитывай ОДНУ запись. Ту, которая изменялось. Одну - единственную. КАКИМ ОБРАЗОМ??? В другом датасете одну запись открывать и потом подкидывать? Не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:49 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBrЛеонов ЮрийХП может изменить значения нескольких полей, как тогда быть? Тогда, по вашей же логике, что с одними данными работают несколько человек, вы никогда не сможете встать в то же место. Потому что того места попросту может уже не существовать. Ваша цель спозиционироваться на редактируемой записи после переоткрытия запроса и не важно в каком виде будет грид. Как раз важно. Цель такая: если изменение касалось не структуры данных, то позиционироваться нужно на то же самое место. Если набор изменился, тогда на эту же запись, пусть она стоит где угодно. А если в новом наборе нет этой записи, тогда идем на первую. По-моему, логично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 15:52 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийФэйтл Эрапропущено... Перечитывай ОДНУ запись. Ту, которая изменялось. Одну - единственную. КАКИМ ОБРАЗОМ??? В другом датасете одну запись открывать и потом подкидывать? Не понимаю... ХЗ, твои проблемы. Ты уперся в свой грид, про сервер и датасет не гу-гу. ... В TIBDataSet, например, 5 sql предложений: - select - insert - update - delete - refresh Последнее (refresh) предложение - именно для перечитывания текущей записи: Код: pascal 1. Вызывается автоматически, после любого изменения, и только для текущей строки. И в TpFIBDataSet тоже такое есть. ... Даже если твой датасет такого не умеет, можно запитать от инмемори датасета. А можно грид юзать в провайдер моде, и создать виртуальный источник данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 16:49 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраЛеонов ЮрийКАКИМ ОБРАЗОМ??? В другом датасете одну запись открывать и потом подкидывать? Не понимаю... ХЗ, твои проблемы. Ты уперся в свой грид, про сервер и датасет не гу-гу. Сервер - Oracle 11.2.0.4.0 TOraQuery из палитры компонент ODAC Сам запрос перебирается динамически, все бинд-переменные заменяются значениями (была необходимость) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 17:25 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийФэйтл Эрапропущено... ХЗ, твои проблемы. Ты уперся в свой грид, про сервер и датасет не гу-гу. Сервер - 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 17:41 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл Эра 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 Это работает когда меняется гарантированно одна строка в наборе А если за время, прошедшее с выборки уже были изменения по другим записям, тогда что? Они же не обновятся автоматом по изменению в БД? Или я неправ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 17:54 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийФэйтл Эра 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. Сделай кнопку: ОБНОВИТЬ. Если юзеру невмоготу - он воспользуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 18:14 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраКонечно, не изменятся. Именно так и работают с датасетами в гридах: перечитывают только ту запись, с которой идет работа. Именно для этого сделаны специальный члены класса датасета - RefeshRecord и RefreshSQL. То есть если другой пользователь изменит данные я не узнаю об этом при перечитке только одной записи. Это помогает в однопользовательской системе, мне такое не подходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 18:24 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, да, порой приходится мутить свой датасет с инкрементальным рефрешем если готовых не найти под свои нужды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 18:32 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийФэйтл ЭраКонечно, не изменятся. Именно так и работают с датасетами в гридах: перечитывают только ту запись, с которой идет работа. Именно для этого сделаны специальный члены класса датасета - RefeshRecord и RefreshSQL. То есть если другой пользователь изменит данные я не узнаю об этом при перечитке только одной записи. Это помогает в однопользовательской системе, мне такое не подходит Глупый какой. Мало тебе датасета, который 7 минут открывается? Ладно, вот тебе кактус: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 18:42 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Уже много лет как сервермоде сделан в гриде, который умеет гораздо больше чем гридмоде... И способен обрабатывать многопользовательские коллизии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 00:32 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Что в прошлой теме, что в этой -- тестовое приложение надо делать, если на основном не получается повторить желаемого. Вот минимальный код, который восстанавливает фокус и скрол (плюс скролит до записи, если она вне экрана оказалась) как в обычном режиме, так и в грид моде. Словно ничего и не обновлялось на экране у пользователя. Всякие проверки и ограничения автору уже самостоятельно надо написать: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 17:24 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDi, опечатка, вот так в конце: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2018, 17:27 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDiJaDi, опечатка, вот так в конце: Код: pascal 1. Уже пробовал такое, при установке TopRecordIndex в датасете позиционирование идет на последнюю видимую в гриде запись, а это не то что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 09:21 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
white_niggerУже много лет как сервермоде сделан в гриде, который умеет гораздо больше чем гридмоде... И способен обрабатывать многопользовательские коллизии Для оракла не сделан сервермодный компонент. Можно конечно извратиться и по аналогии написать свой, но был опыт уже таких работ, именно с сервермодного режима на это и скатился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 09:23 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраГлупый какой. Мало тебе датасета, который 7 минут открывается? Ладно, вот тебе кактус: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Во-первых, датасет открывается влет, за доли секунды Во-вторых, этот пример тоже не работает как нужно. Позиционирование проходит правильно на запись, но сама запись относительно сетки грида съезжает вниз (опять становится на предпоследнюю запись) Уже начинаю сомневаться, что что-то получится(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 09:34 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийДля оракла не сделан сервермодный компонент.В смысле? В сервермоде с ораклом можно работать через FireDac, ADO, DBX/ Чем не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 09:46 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийJaDiJaDi, опечатка, вот так в конце: Код: pascal 1. Уже пробовал такое, при установке TopRecordIndex в датасете позиционирование идет на последнюю видимую в гриде запись, а это не то что нужно. РАБОТАЕТ. Корректно. Даже в грид моде. См. свой код, который где-то переоткрывает грид после восстановления фокуса. И восстановление надо делать уже после всех операций первооткрытия и EndUpdate'ов: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 10:25 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
white_niggerЛеонов ЮрийДля оракла не сделан сервермодный компонент.В смысле? В сервермоде с ораклом можно работать через FireDac, ADO, DBX/ Чем не устраивает? Пример работы с ODAC-овскими датасетами можете привести? Которые через Direct подключаются к БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 12:21 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDiРАБОТАЕТ. Корректно. Даже в грид моде. См. свой код, который где-то переоткрывает грид после восстановления фокуса. И восстановление надо делать уже после всех операций первооткрытия и EndUpdate'ов: у меня отработал нормально только если стою на первой условной странице данных или на второй. На всех остальных - проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 12:23 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийПример работы с ODAC-овскими датасетами можете привести? Которые через Direct подключаются к БД?Third-party компоненты не поддерживаем, хотя если не ошибаюсь, был пример адаптера для Unidac-а. А что в ODAC для этого грида есть такого, чего нет в том же FireDac? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 13:16 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийJaDiРАБОТАЕТ. Корректно. Даже в грид моде. См. свой код, который где-то переоткрывает грид после восстановления фокуса. И восстановление надо делать уже после всех операций первооткрытия и EndUpdate'ов: у меня отработал нормально только если стою на первой условной странице данных или на второй. На всех остальных - проблема. На dxMemData работает, с TOraQuery - нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 13:21 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийНа dxMemData работает, с TOraQuery - нет... Хотя вру, работает... Походу наворотил в проекте лишнего, буду посмотреть. Чуть позже отпишусь о результатах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 13:49 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, хмм, действительно, при большом кол-ве данных на dxmem тоже не будет работать... Вот новый способ по сохранению и восстановлению данных с совсем другим подходом (через универсальные букмарки грида, работающие в любом режиме). Работает как в гриде моде, так и без него одинакового. Минимальный код (проверки при добавлении/удалении записей оставляю автору): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 13:52 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
white_niggerЛеонов ЮрийПример работы с ODAC-овскими датасетами можете привести? Которые через Direct подключаются к БД?Third-party компоненты не поддерживаем, хотя если не ошибаюсь, был пример адаптера для Unidac-а. А что в ODAC для этого грида есть такого, чего нет в том же FireDac? Оффтоп: вообще-то у одаков есть direct mode, который позволяет работать с базой напрямую без установки оракловского клиента одним экзешником (фаердак же требует установки клиента, который тянет за собой десятки файлов и кучу настроек). А вообще, тут ведь проблема в старом коде -- если есть проекты на одаках, то никто их просто так на фаердаки переписывать явно не будет. Можно взять пример с того же FastReport'а -- который вместе с компонентами поставляет дополнительные адаптеры под те или иные базы/даки, и которые по желанию можно поставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 14:23 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDi Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. для ODAC-овского датасета подошел вариант Код: pascal 1. 2. 3. 4. 5. 6. 7. Наверное для GridMode большой индекс топа не понятен, сваливался в начало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 15:07 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, неправильно скопировал, вот так надо Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 15:08 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, потому что это разные закладки... Для фокуса есть универсальная SaveBookmark и Goto. В справке написано именно ее использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 15:10 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, в gridmode еще могут поджидать сюрпризы при попытке работать с (множественным) выделением записей и букмарками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 15:57 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDiЛеонов Юрий, потому что это разные закладки... Для фокуса есть универсальная SaveBookmark и Goto. В справке написано именно ее использовать.Для сабжа букмарки неприменимы. при любом апдейте данных может произойти: * изменение значений полей как в текущей записи, так и в других. * изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля. * исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись. Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключ. Ну и проверка на то, был ли критичный апдейт, тогда переоткрытие может не понадобиться. Если апдейт данных, это "удаление", то в некот. случаях можно виртуально удалить запись из датасета, не перечитывая заново весь датасет. Это возможно в ФайрДАКе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 16:52 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
L_argoДля сабжа букмарки неприменимы. при любом апдейте данных может произойти: * изменение значений полей как в текущей записи, так и в других. * изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля. * исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись. Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключ. И как же "память о ключе" спасет, например, от "исчезновения" по условиям фильтрации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 17:00 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
L_argoДля сабжа букмарки неприменимы. при любом апдейте данных может произойти: * изменение значений полей как в текущей записи, так и в других. * изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля. * исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись. Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключ. Ну и проверка на то, был ли критичный апдейт, тогда переоткрытие может не понадобиться. Если апдейт данных, это "удаление", то в некот. случаях можно виртуально удалить запись из датасета, не перечитывая заново весь датасет. Это возможно в ФайрДАКе. Ключ и так запоминаю. Модель такая: 1. Если установили пользовательский фильтр, то без вариантов переходим на первую запись в гриде 2. Если это первоначальное заполнение грида (открытие формы например), то тоже идем на первую запись 3. Если хотим обновить данные, то сохраняем позицию "до" и восстанавливаем ее "после" перечитки данных 4. При совершении каких либо операций над записью, пытаемся стать на нее. Если по условиям фильтрации или сортировки запись меняет свое расположение в наборе данных, то становимся на нее, не учитывая предыдущую позицию. Если при фильтрации этой записи в обновленном наборе нет, то идем на первую запись в гриде. Как видите, ключ я использую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 17:44 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий... 4. При совершении каких либо операций над записью, пытаемся стать на нее. Если по условиям фильтрации или сортировки запись меняет свое расположение в наборе данных, то становимся на нее, не учитывая предыдущую позицию. Если при фильтрации этой записи в обновленном наборе нет, то идем на первую запись в гриде. ... Т.обр., после удаления текущей записи ты каждый раз переходишь на первую запись? Прэлестно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 18:01 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
L_argoДля сабжа букмарки неприменимы. при любом апдейте данных может произойти: * изменение значений полей как в текущей записи, так и в других. * изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля. * исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись. Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключТа не, это же вопрос реализации букмаркинга датасетом и вполне есть такие в к-х всяческие изменения позиций не страшны (и ключ может запоминаться) но конечно с выбытием по условиям фильтрации особо ничего не поделаешь, не положено если показывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 18:05 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
vavanL_argoДля сабжа букмарки неприменимы. при любом апдейте данных может произойти: * изменение значений полей как в текущей записи, так и в других. * изменение позиции в датасете (или даже в дереве) из-за апдейта сортированного поля. * исчезновение из выборки, т.к. наложеный фильтр может выбросить обновленную запись. Поэтому единственный выход: запоминание ключа, апдейт данных, переоткрытие датасета, попытка найти запомненный ключТа не, это же вопрос реализации букмаркинга датасетом и вполне есть такие в к-х всяческие изменения позиций не страшны (и ключ может запоминаться) но конечно с выбытием по условиям фильтрации особо ничего не поделаешь, не положено если показывать Вопрос вообще из серии "никакой", ТС сам себя напугал выдуманной проблемой и теперь героически ее преодолевает, непонятно для чего. Результат известен заранее: не он первый... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 18:14 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраВопрос вообще из серии "никакой"я касательно "неприменимости" букмарков для сабжа, а этот вопрос вполне даже "какой". когда-то девэксы починили мне в частности B192042, но ряд траблов с gridmode и закладками таки помнится остался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 18:27 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
vavan, ОК, реализацию букмарков нужно смотреть по месту в каждом конкретном классе датасета, но обычно, если в данных есть за что зацепиться - проблем нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 18:33 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраТ.обр., после удаления текущей записи ты каждый раз переходишь на первую запись? Прэлестно. Подгорецкий в свое время давал пример НЕпользования закладками именно по причине их ненадежной валидности. И предлагал переходить на предыдущую запись по ID в случае удаления текущей между прочим :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 18:47 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
ДокФэйтл ЭраТ.обр., после удаления текущей записи ты каждый раз переходишь на первую запись? Прэлестно. Подгорецкий в свое время давал пример НЕпользования закладками именно по причине их ненадежной валидности... Еще раз: реализация букмарков зависит от конкретного датасета, надо смотреть. Док...И предлагал переходить на предыдущую запись по ID в случае удаления текущей между прочим :) Ну, это и обычный датасет при удалении делает, и на предыдущую не "по ID", а в соответсвии с текущим порядком следования записей. И - ах и что же делать, если при удалении текущей записи удалится и предыдущая? Ну, триггеры так отработают, например. Или другие злобные юзеры. Хранить ID всех записей, нафсякей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 19:09 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
ДокПодгорецкий в свое время давал пример НЕпользования закладками именно по причине их ненадежной валидности. И предлагал переходить на предыдущую запись по ID в случае удаления текущей между прочим :) Лучше на следующую. Переход назад озадачивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 19:20 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Василий 2ДокПодгорецкий в свое время давал пример НЕпользования закладками именно по причине их ненадежной валидности. И предлагал переходить на предыдущую запись по ID в случае удаления текущей между прочим :) Лучше на следующую. Переход назад озадачивает. Наверное, имелся в виду частный случай, когда удалялась последняя запись... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2018, 19:31 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраИ - ах и что же делать, если при удалении текущей записи удалится и предыдущая? а если электричество кончится? Василий 2Лучше на следующую. Переход назад озадачивает. 3207043 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 08:09 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
ДокВасилий 2Лучше на следующую. Переход назад озадачивает. 3207043 Посмотрел пример. Locate-ом получается можем пробежать весь набор? У меня зачастую там по сотне тысяч записей может быть, представляю зависание... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 09:06 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDiЛеонов Юрий, потому что это разные закладки... Для фокуса есть универсальная SaveBookmark и Goto. В справке написано именно ее использовать. Как бы там ни было, но мой вариант с закладками на датасете работает. Проверил по всем интересующим вариантам. Огромное спасибо JaDi за подсказанное направление! Всем спасибо за обсуждение и предложения, буду наблюдать дальше поведение грида ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 09:10 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрийпредставляю зависание... А проверить? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 13:07 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2040132]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
107ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 503ms |

| 0 / 0 |
