Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Событие по смене записи   Найти похожие ветки 

 
yurikon   (2010-09-22 16:53) [0]

Добрый день!

Вроде простая задача, но не могу решить. Какое событие вызывается, когда перемещаешься с одной записи на другую? использую TDBGridEh и TADODataSet.

Пробовал onMove - но оно генерируется постоянно, даже когда маркер не двигается по таблице.

Весь хелп уже облазил, помогите плиз.

С уважением,
 Юрий.


 
12 ©   (2010-09-22 17:03) [1]

OnDataChange


 
Sergey13 ©   (2010-09-22 17:14) [2]

АфтерСкролл.


 
Ega23 ©   (2010-09-22 17:18) [3]


> АфтерСкролл.


Оно всегда генерируется, даже если DataSet.DisabledControls
ИМХО, OnDataChange - в данном случае более верно.


 
Sergey13 ©   (2010-09-22 17:37) [4]

> [3] Ega23 ©   (22.09.10 17:18)
> в данном случае более верно.

А что за случай то? 8-)


 
Ega23 ©   (2010-09-22 17:47) [5]


> А что за случай то? 8-)


По гриду товарищ смещается.


 
yurikon   (2010-09-22 18:13) [6]

Афтерскролл - постоянно выскакивает, а onDatatChange - я не изменяю данные, просто прохожу по записям.

Что еще можно посмотреть?


 
Германн ©   (2010-09-22 18:28) [7]


> onDatatChange - я не изменяю данные, просто прохожу по записям

Occurs when the data in a record has changed, either due to field edits or moving the cursor to a new record.


 
yurikon   (2010-09-22 20:13) [8]

onDataChange - не подходит, так как таблица переоткрывается каждую секунду и он срабатывает (((.


 
Медвежонок Пятачок ©   (2010-09-22 21:16) [9]

а ты переоткрывай чаще.
раз в миллисекунду.
тогда оно не успеет сработать.


 
Ega23 ©   (2010-09-22 22:09) [10]


> так как таблица переоткрывается каждую секунду


Убивать за такое надо.


 
sas-koval   (2010-09-23 00:34) [11]


> так как таблица переоткрывается каждую секунду

это определённо странно.. на это есть какие-то адекватные причины?
и всё-же опиши, для чего тебе знать, когда сместился курсор? может к какому-то ещё событию привязаться? например очередной рефреш таблицы...

опиши детальней и больше будет толковых ответов.


> а ты переоткрывай чаще.
> раз в миллисекунду.
> тогда оно не успеет сработать.

)))))))


 
Sergey13 ©   (2010-09-23 10:20) [12]

> [8] yurikon   (22.09.10 20:13)

Ты бы написал, что хочется получить в результате всех этих телодвижений. А то искать варианты к твоим домыслам быстро, видишь, не получается.


 
yurikon   (2010-09-23 13:56) [13]

2 Ega23:
Если вы такой умный, может подскажите, как узнать  обновилась внешняя таблица в базе аксесс, не переоткрывая ее?

по делу

Вообщем проблемка носит больше косметический характер. Есть форма с гридом и есть форма "поверх всех" с TDBLookupComboBoxEh со столбцом из этой же таблицы. Когда переходим на новую запись на гриде, надо чтобы автоматом обновлялся комбобох, для этого ему надо прописать KeyValue по событию, которое я пока не нашел.

С уважением.


 
Ega23 ©   (2010-09-23 14:09) [14]


> Если вы такой умный, может подскажите, как узнать  обновилась
> внешняя таблица в базе аксесс, не переоткрывая ее?


Да, я такой умный. Да, могу.
1. Такой функционал по-настоящему нужен только в очень небольшом количестве систем, в 99.99% случаев достаточно кнопки "Обновить", которую пользователь нажимает сам.
2. Как правило, пользователю нафиг не нужна ВСЯ выборка, ему нужно только то, что он видит на экране. Соответственно, если у тебя в базе миллион записей, то ты не весь миллион тащишь, а какое-то количество. Значит у пользователя должна быть возможность сортировки.
3. Если тебе всё-таки совсем пипец как необходимо свежие изменённые данные давать пользователю, то вот тебе один из вариантов:
3.1. В таблицу заводится поле LastModifyed datetime
3.2. Поле индексируется.
3.3. Выборка делается с учётом данного поля.
3.4. На клиенте данные сохраняются, также сохраняется максимальное значение времени в выборке.
3.5. Следующие запросы идут с проверкой, чтобы LastModifyed было больше.
3.6. GOTO 3.3.


 
Ega23 ©   (2010-09-23 14:30) [15]


> для этого ему надо прописать KeyValue по событию, которое
> я пока не нашел.


Тебе в первом ответе всё сказали.
Но я понимаю, тебе лениво в хелп лезть, в исходники, экспериментировать...
Гораздо проще на форуме, да?
Хотя нет, в [7] тебе даже хелп процитировали. Даже выделили.
Чего непонятно-то?


 
Sergey13 ©   (2010-09-23 15:20) [16]

> [13] yurikon   (23.09.10 13:56)

Я это делаю через
> [2] Sergey13 ©   (22.09.10 17:14)
> АфтерСкролл.

Только не напрямую, а через таймер. Т.е. в самом событии перезапуск таймера, а в онТайм переоткрытие нужного датасета. Это для того, что бы отсечь работу при "скольжении" по записям.


 
yurikon   (2010-09-23 15:45) [17]


> Тебе в первом ответе всё сказали.
> Но я понимаю, тебе лениво в хелп лезть, в исходники, экспериментировать.
> ..
> Гораздо проще на форуме, да?


На форуме много умных людей, а с ними всегда приятно общаться ;-).

А за конструктив в [14] действительно спасибо. Ваш ответ натолкнул на мысль, что выполнение программы можно значительно ускорить при запросах к таблицам, в которых только увеличивается количество записей, а сами записи не изменяются.
Осталось сообразить, как "правильней" доклеивать новые записи из Запроса1 к старым...
Создать клон таблицы и SELECT ... INTO ..."клон" - доклеивать?

С уважением,
 Юрий.


 
Ega23 ©   (2010-09-23 15:53) [18]


> Осталось сообразить, как "правильней" доклеивать новые записи
> из Запроса1 к старым...


DataSet.Insert, TDataSet.Edit


 
Германн ©   (2010-09-23 15:54) [19]


> натолкнул на мысль, что выполнение программы можно значительно
> ускорить

Если мне будет позволено еще чуть-чуть потелепировать, то могу предположить что использование DisableControls/EnableControls тоже может помочь ОРД.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.053 c
15-1350765004
Юрий
2012-10-21 00:30
2013.03.22
С днем рождения ! 21 октября 2012 воскресенье


2-1338534766
leklerk
2012-06-01 11:12
2013.03.22
Вторичная форма в центре главной


2-1330616538
>|<
2012-03-01 19:42
2013.03.22
Ошибка перемещения файла


15-1335549150
Влад
2012-04-27 21:52
2013.03.22
Сколько Калькуляторов получится открыть максимально?


15-1332959449
Гость
2012-03-28 22:30
2013.03.22
Вирусная музыкальная реклама twix