|
|
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
Стандартный вариант master - detail. Использую событие OnDataChange у MasterDataSource, чтобы переоткрыть детальный НД. При начальном открытии это событие срабатывает три раза. Потом, когда переходишь по записям, уже единоразово. Как быть в таких случаях? Проверки на MasterUniQuery.Active и MasterUniQuery.RecordCount не помогают. Т.е. получается, что OnDataChange три раза срабатывает уже после открытия MasterUniQuery. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 20:45 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
X11, ты хочешь сказать, что: если создать проект-пустышку, то все равно три раза срабатывает? Или все же где-то что-то спрятано?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 09:35 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
Хм... в пустышке норм.... один раз срабатывает. Но проблемный проект сложнее, там три наследованных фрейма. Попробую ещё потестировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 10:34 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
Не знаю, может глупость напишу... Интересно, а связана ли моя проблема с тем, что сам набор TUniQuery+TDataSoutce+сетка лежат на родительском (первом) фрейме. Всего их три: родительский, промежуточный и рабочий (дочерний). На дочернем фрейме этот набор из трех компонент как бы дублируется, т.е. всего получается как бы три набора, если можно так выразиться. Событие TDataSoutce.OnDataChange живет в промежуточном фрейме. И сам код UniQuery.Close/Open тоже в промежуточном. В дочернем фрейме (пока что) нет никакого кода, там только в UniQuery.SQL вставлен запрос к базе. В пером родительском и в конечном фреймах кода в события OnDataChange нету. Т.е. весь код на 99% в промежуточном фрейме. Сделал такой тест. В промежуточный фрейм (TfrdParentTest) добавил счётчик. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. На всякий случай поискал ".Open" в модуле. Встречается только один раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 14:41 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
Новый эксперимент. На последнем (дочернем) фрейме создал новый набор UniQuery + DataSource, но сетку оставил старую, т.е. ту, что тянется из самого первого родительского фрейма. Код: 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. 28. 29. 30. 31. В итоге ShowMessage показывает всё равно "2". И вот ещё. Не понимаю, откуда в событии и зачем там "inherited", если DataSource1 нет на предыдущих (родительских) фреймах? Так и должно быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 15:27 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
X11 но сетку оставил старую Ошибся. Я вообще сетку не подключал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 15:57 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
Перенес UniQuery + DataSource в модуль данных. т.е. уже без фреймов. Всё равно два раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 15:58 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
X11, ставь бряк и по колл-стэку смотри откуда и почему вызовы идут. можно попробовать дополнительно включить debug dcu, иногда помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2020, 00:23 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
Ну вот смотрю я на три скриншота callstack, но толку с того. Я же не знаю досконально, должны ли те или иные процедуры/функции вызываться. Т.е. для меня на снимках нет ничего необычного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2020, 12:49 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
X11, Отключай по-блочно функционал, связанный с фреймом, пока не достигнешь одного вызова. Старый, надежный, дедовский способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2020, 15:20 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
X11 Перенес UniQuery + DataSource в модуль данных. т.е. уже без фреймов. Всё равно два раза. уже и не знаю, что отключать, уже просто ничего не подключено, вне фреймов выполняется код, даже сетка не подключена была ну ок, ещё раз перепроверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2020, 15:25 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
X11 X11 Перенес UniQuery + DataSource в модуль данных. т.е. уже без фреймов. Всё равно два раза. уже и не знаю, что отключать, уже просто ничего не подключено, вне фреймов выполняется код, даже сетка не подключена была ну ок, ещё раз перепроверю. и вне фреймов тоже. Чудес не бывает: где - то может быть ссылка связанная с элементом фрейма. Отключать надо все, что хоть как то связано с фреймом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2020, 15:32 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
Ещё один эксперимент. Фрейм-одиночка. Т.е. унаследован только у системного фрейма TfrdSessions = class(TUniFrame). К DataSource привязан ClientDataSet. Всё равно 2 раза срабатывает Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 12:04 |
|
||
|
UniQuery - при открытии событие DataSource.OnDataChange срабатывает 3 раза
|
|||
|---|---|---|---|
|
#18+
X11 Всё равно 2 раза срабатывает вернее 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 12:24 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39931604&tid=2038543]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 345ms |

| 0 / 0 |
