-
Добрый день!
Вроде простая задача, но не могу решить. Какое событие вызывается, когда перемещаешься с одной записи на другую? использую TDBGridEh и TADODataSet.
Пробовал onMove - но оно генерируется постоянно, даже когда маркер не двигается по таблице.
Весь хелп уже облазил, помогите плиз.
С уважением, Юрий.
-
OnDataChange
-
АфтерСкролл.
-
> АфтерСкролл.
Оно всегда генерируется, даже если DataSet.DisabledControls ИМХО, OnDataChange - в данном случае более верно.
-
> [3] Ega23 © (22.09.10 17:18) > в данном случае более верно.
А что за случай то? 8-)
-
> А что за случай то? 8-)
По гриду товарищ смещается.
-
Афтерскролл - постоянно выскакивает, а onDatatChange - я не изменяю данные, просто прохожу по записям.
Что еще можно посмотреть?
-
> onDatatChange - я не изменяю данные, просто прохожу по записям
Occurs when the data in a record has changed, either due to field edits or moving the cursor to a new record.
-
onDataChange - не подходит, так как таблица переоткрывается каждую секунду и он срабатывает (((.
-
а ты переоткрывай чаще. раз в миллисекунду. тогда оно не успеет сработать.
-
> так как таблица переоткрывается каждую секунду
Убивать за такое надо.
-
> так как таблица переоткрывается каждую секунду
это определённо странно.. на это есть какие-то адекватные причины? и всё-же опиши, для чего тебе знать, когда сместился курсор? может к какому-то ещё событию привязаться? например очередной рефреш таблицы...
опиши детальней и больше будет толковых ответов.
> а ты переоткрывай чаще. > раз в миллисекунду. > тогда оно не успеет сработать.
)))))))
-
> [8] yurikon (22.09.10 20:13)
Ты бы написал, что хочется получить в результате всех этих телодвижений. А то искать варианты к твоим домыслам быстро, видишь, не получается.
-
2 Ega23: Если вы такой умный, может подскажите, как узнать обновилась внешняя таблица в базе аксесс, не переоткрывая ее?
по делу
Вообщем проблемка носит больше косметический характер. Есть форма с гридом и есть форма "поверх всех" с TDBLookupComboBoxEh со столбцом из этой же таблицы. Когда переходим на новую запись на гриде, надо чтобы автоматом обновлялся комбобох, для этого ему надо прописать KeyValue по событию, которое я пока не нашел.
С уважением.
-
> Если вы такой умный, может подскажите, как узнать обновилась > внешняя таблица в базе аксесс, не переоткрывая ее?
Да, я такой умный. Да, могу. 1. Такой функционал по-настоящему нужен только в очень небольшом количестве систем, в 99.99% случаев достаточно кнопки "Обновить", которую пользователь нажимает сам. 2. Как правило, пользователю нафиг не нужна ВСЯ выборка, ему нужно только то, что он видит на экране. Соответственно, если у тебя в базе миллион записей, то ты не весь миллион тащишь, а какое-то количество. Значит у пользователя должна быть возможность сортировки. 3. Если тебе всё-таки совсем пипец как необходимо свежие изменённые данные давать пользователю, то вот тебе один из вариантов: 3.1. В таблицу заводится поле LastModifyed datetime 3.2. Поле индексируется. 3.3. Выборка делается с учётом данного поля. 3.4. На клиенте данные сохраняются, также сохраняется максимальное значение времени в выборке. 3.5. Следующие запросы идут с проверкой, чтобы LastModifyed было больше. 3.6. GOTO 3.3.
-
> для этого ему надо прописать KeyValue по событию, которое > я пока не нашел.
Тебе в первом ответе всё сказали. Но я понимаю, тебе лениво в хелп лезть, в исходники, экспериментировать... Гораздо проще на форуме, да? Хотя нет, в [7] тебе даже хелп процитировали. Даже выделили. Чего непонятно-то?
-
> [13] yurikon (23.09.10 13:56)
Я это делаю через > [2] Sergey13 © (22.09.10 17:14) > АфтерСкролл.
Только не напрямую, а через таймер. Т.е. в самом событии перезапуск таймера, а в онТайм переоткрытие нужного датасета. Это для того, что бы отсечь работу при "скольжении" по записям.
-
> Тебе в первом ответе всё сказали. > Но я понимаю, тебе лениво в хелп лезть, в исходники, экспериментировать. > .. > Гораздо проще на форуме, да?
На форуме много умных людей, а с ними всегда приятно общаться ;-).
А за конструктив в [14] действительно спасибо. Ваш ответ натолкнул на мысль, что выполнение программы можно значительно ускорить при запросах к таблицам, в которых только увеличивается количество записей, а сами записи не изменяются. Осталось сообразить, как "правильней" доклеивать новые записи из Запроса1 к старым... Создать клон таблицы и SELECT ... INTO ..."клон" - доклеивать?
С уважением, Юрий.
-
> Осталось сообразить, как "правильней" доклеивать новые записи > из Запроса1 к старым...
DataSet.Insert, TDataSet.Edit
-
> натолкнул на мысль, что выполнение программы можно значительно > ускорить
Если мне будет позволено еще чуть-чуть потелепировать, то могу предположить что использование DisableControls/EnableControls тоже может помочь ОРД.
|