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

start [/forum/topic.php?fid=58&msg=39731892&tid=2040132]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
189ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 538ms |

| 0 / 0 |
