|
|
|
Позиционирование при перечитывании запроса и 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 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39730662&tid=2040132]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 478ms |

| 0 / 0 |
