Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

Изменения в сетевой БД   Найти похожие ветки 

 
MAxiMum   (2002-03-13 15:23) [0]

Как узнать при работе с сетевой БД Paradox об обновлении записи (ей) в таблице(ах)?


 
sniknik   (2002-03-13 16:16) [1]

следить за файлами в сетевой директории PARADOX.LCK PDOXUSRS.LCK они создаются при обращении к таблицам. ?


 
MAxiMum   (2002-03-13 19:22) [2]

И что. Как следить через FileNotification? Неэффективно. Псмотри, как обновляет Database Desktop всё круто: запускаешь Database Desktop, любую прогу. Смотришь ту таблицу, которую изменяет прога. Изменения видны моментально.


 
MAxiMum   (2002-03-13 20:11) [3]

Поступило предложение в чате, что через TBDECallBack можно попробовать но у меня не работает.

function TMain.MCallBack(CBInfo: Pointer): CBRType;
begin
<DataModule>.<Table>.Close;
<DataModule>.<Table>.Open;
showmessage("Обновление");
end;

procedure TMain.ToolButton13Click(Sender: TObject);
begin
FBDE := TBDECallback.Create(<DataModule>, <DataModule>.<Table>.Handle, cbTABLECHANGED, nil, 0, MCallBack, True);
end;


 
sniknik   (2002-03-14 00:04) [4]

Не так уж он и крут Бэтмен, то есть Database Desktop - явно делает рефреш таблице по событию. Можно две проги рядом поставить и хоть наизменяйся D.Desktop не пошевелится пока фокус не получит или над ним какое окно сдвинуть, и т.д. т.е. он отлавливает все события где надо перерисовку таблици делать и по ним ее обновляет.
можеш так же сделать
постывь таймер
Timer.Interval=100
а в обработку таймера запиши
if Table1.Active then Table1.Refresh;
еще круче получится все изменения моментально отразятся в твоем гриде даже если никакого события не произойдет (и мышкой над ней не надо дергать как в D.Desktop).
Кстати припоминаю в Foxpro есть такая вещ как интервал для обновления сетевых таблиц.
А пример из чата у меня тоже не работает. Если подумать то правильно не работает ведь это тебе другие программы должны это событие генерировать. А этого ты от них не дождешся.


 
McSimm   (2002-03-14 11:54) [5]

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

Думаю проблема в том, что у MAxiMum © разные программы работают через разные BDE - каждая на своей машине. И Callback каждый BDE раздает только для "своих".


 
sniknik   (2002-03-14 12:25) [6]

Тогда почему у меня на одной локальной машине (все к одному BDE подключены) D.Desktop не обновляет таблицы по Callback? может потому что я не генерю в своей программе TBDECallback.Create? Или в нем обработчика события от CallBack нет? Надо проверить вставить...


 
McSimm   (2002-03-14 12:33) [7]

>sniknik © (14.03.02 12:25)
>..почему .. D.Desktop не обновляет таблицы по Callback?
Наверное потому, что он не использует callback.

>может потому что я не генерю в своей программе TBDECallback.Create?
Регистрации BDECallback означает просьбу программы к BDE информировать программу об интересующих ее событиях в BDE.
А никак не информирование BDE о событиях в программе


 
MAxiMum   (2002-03-14 13:19) [8]

McSimm © Так почему эта просьба не работает?
sniknik © Спасибо, конечно, но через таймер с большой БД не повозишься. Пользователь так и не сможет нисего ввести, постоянный ревреш всё сожрёт.
Кстати, так же есть функция DbiRegisterCallBack в модуле BDE. С ней я не пробовал. Но, я думаю, что TBDECallback работает по тому же принципу.


 
sniknik   (2002-03-14 13:40) [9]

Отключать обработку таймера при переходе таблицы в State.dsEdit, dsInsert. ?


 
deleon   (2002-03-14 13:44) [10]

[sniknik]- проверь почту, у меня к тебе есть вопросы :)


 
McSimm   (2002-03-14 13:49) [11]

>MAxiMum © (14.03.02 13:19)
>Так почему эта просьба не работает?
Если две программы подключены к одному и тому же BDE - он должен вызывать их callback при наступлении события.
Если же одна программа подключена к одному BDE, а другая к другому (на другом компьютере), то события в одном BDE и события в другом рассылаются только тем программам, которые к ним подключены.
> Но, я думаю, что TBDECallback работает по тому же принципу.
TBDECallback это просто wrapper (обертка) DbiRegisterCallBack. Существует для удобства программиста.


 
Proggy   (2002-03-21 21:58) [12]

Я делал через DbiRegisterCallBack; так вот моя функция не вызывалась до тех пор, пока я не делал какое либо обращение к BDE (например, перемещение по записям и т.п.)



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

Форум: "Базы";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-32662
vopros
2002-03-20 11:13
2002.04.11
Помогите составить запрос:


1-32833
DikobraZ
2002-03-28 18:13
2002.04.11
Помогите справиться с сообщением об ошибке!


3-32692
Lena
2002-03-19 20:42
2002.04.11
Какой формат таблицы порекомендуете для хранения preview-шек


3-32664
GenBr
2002-03-20 12:33
2002.04.11
ClientDataSet


1-32769
новенький в Делфи
2002-03-30 14:17
2002.04.11
Обработчик событий





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский