![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление lookup кэша при автоматическом обновлении НД [D5, Paradox]
Тучудище © (2005-06-07 12:14:00)Hello all!!!
Кратко опишу ситуацию:
Имееться НД, который содержит подстановочные поля, у данных полей включено кэширование значений для подстановки.
При работе с локальными БД (в данном случае paradox) как вам известно имеется следующая особенность, когда один из пользователей добавил новую запись, остальные при листании НД с помощью сетки увидят данную запись(более как автодобавление новых записей это назвать не могу)
Теперь ближе к моей ситуации:
Пользователь А добавил запись с несколькими новыми значениями для подстановочных полей которые он сам же и создал
Пользователь Б просматривая НД обнаружил новую запись но поскольку новые значения для подстановки в кэш не попали то соответсвенно lookup поля будут пустыми
Вид на запись пользователя а:
№ ордера |Дата ордера |ФИО | вид док-та |
1978 |07/06/05 |Иванов И.И. | Нац. паспорт |
Вид на запись пользователя б:
№ ордера |Дата ордера |ФИО | вид док-та |
1978 |07/06/05 | | |
Собственно сам вопрос, каким образом можно отловить появление новых записей в НД таким вот образом.
В качестве нд используется компонент TQuery с RequstLive:=True
ЮЮ (2005-06-09 10:05:00) [1]>так оно сейчас и работает... :-( блин
И чем не нравится?
Тучудище (2005-06-09 10:00:00) [2]готично.... так оно сейчас и работает... :-( блин... ну ладно оставлю как есть....
ЮЮ (2005-06-09 09:51:00) [3]>каким образом можно отловить появление новых записей в НД таким вот образом
procedure TCustomDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
...
Value := DrawColumn.Field.DisplayText;
...
function TField.GetDisplayText: string;
begin
Result := '';
if Assigned(FOnGetText) then
FOnGetText(Self, Result, True) else
GetText(Result, True);
end;
Поэтому, достаточо в OnGetText
Text := TFieldCrack(Sender).GetText(Result, True);
if Text = '' then //следует обновить
Тучудище (2005-06-09 06:42:00) [4]Ни одного каммента за 2 суток... кашмар...
Тучудище (2005-06-08 06:54:00) [5]>А почему это не делать BeforeRefresh соновного НД ?
Да потому, что он не срабатывает на автоматическое обновление, в BeforeRefresh и так стоит обработчик, который следит за актуальностью кэша!
вп (2005-06-07 16:35:00) [6]
> 2)RefreshLookupCache в AfterScroll(торомза будут ужастные
> и не нужно это никому)
А почему это не делать BeforeRefresh соновного НД ?
Тучудище (2005-06-07 16:21:00) [7]а жаль, почитать очень хочется по этому поводу.... :-(
даже что то в хелпе ни чего не попадается по данному поводу....
вп (2005-06-07 16:08:00) [8]
> 3)Отловить событие автообновления НД(можно ли???)
Видел подобное на Королевстве Делфи.. Но точно, где не подскажу.. Помню, что применяется call-back процедуры (вроди)..
Тучудище (2005-06-07 16:03:00) [9]Блин!
Ладно пойду простым путем варианта родилось в голове 2
1)CachedUpdates(наборов данных много...)
2)RefreshLookupCache в AfterScroll(торомза будут ужастные и не нужно это никому)
3)Отловить событие автообновления НД(можно ли???)