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

Вниз

Проблема с TBDECallback   Найти похожие ветки 

 
leonidus   (2004-07-27 10:16) [0]

Есть локальная БД dBase, хочу с на ней отработать функцию обратного вызова что бы потом перенести опыт на распеределенную БД на двух компах. Итак, делаю вот что:

//эту функцию надо будет вызвать обратным вызовом
function TForm1.TableChangeCallBack(CBInfo: Pointer): CBRType;
begin
 MessageBeep(0);
end;

procedure TForm1.T1AfterOpen(DataSet: TDataSet);
begin
// устанавливаю функцию обратного вызова
 TBDECallback.Create(Self, TTable(DataSet).Handle,
   cbTableChanged, nil, 0, TableChangeCallBack, True);
end;

по таймеру проверяю занята ли таблица и если она свободна разрешую к ней доступ

procedure TForm1.Timer1Timer(Sender: TObject);
var
 SeqNo: Longint;
begin
 if T1.State <> dsInActive then
   DbiGetSeqNo(T1.Handle, SeqNo);
end;

Все как в литературе:
http://www.delphirus.com.ru/delphi-sovetid-129.html
http://www.delphikingdom.ru/asp/viewitem.asp?UrlItem=/helloworld/bdeloc.htm

НО TableChangeCallBack никогда не выполняется, в чем тут дело?


 
Sandman25 ©   (2004-07-27 10:21) [1]

Насколько я помню, callback работает только для Paradox


 
leonidus   (2004-07-27 10:24) [2]

не ну я догадывался... просто думал что это механизм именно движка, т.е. BDE а ему пофигу с какой базой работать dBase или Paradox. Я что не прав?


 
leonidus   (2004-07-27 10:27) [3]

В любом случае, как тогда на другой машине узнать что тут в БД были внесены изменения что бы и на другой машине обновить Grid(БД у них одна)?


 
Sandman25 ©   (2004-07-27 10:27) [4]

DbiRegisterCallBack + F1,
затем тыкаем на cbTABLECHANGED и находим:
...This callback is supported only by the Paradox driver.


 
Sandman25 ©   (2004-07-27 10:28) [5]

[3] leonidus   (27.07.04 10:27)

А не надо этого делать. Если пользователь захочет, пускать кнопку "Обновить" давит.


 
leonidus   (2004-07-27 10:41) [6]

"Обновить" это всегда понятно, может просто есть другие способы - изяшнее?


 
Sandman25 ©   (2004-07-27 10:43) [7]

Нужно не изящнее, нужно удобнее и экономичнее.


 
Соловьев ©   (2004-07-27 10:46) [8]


> Есть локальная БД dBase, хочу с на ней отработать
> функцию обратного вызова что бы потом перенести опыт
> на распеределенную БД на двух компах.

это можно сделать все и без БДЕ - Мидас. Но, имхо,

> Sandman25 ©   (27.07.04 10:28) [5]

прав.


 
leonidus   (2004-07-27 10:53) [9]

хорошо, пусть будет удобнее, но мне кажется каждый раз кликать "Обновить" это не лучший вариант, особено есть сеть плохая, приходится ждать обновления секунд по 10-20


 
Sandman25 ©   (2004-07-27 10:54) [10]

[9] leonidus   (27.07.04 10:53)

Супер! Вместо того, чтобы работать, пользователь будет каждые 30 секунд ждать по 20 секунд, потому что кто-то другой из пользователей добавил запись :)


 
bushmen ©   (2004-07-27 10:55) [11]

> особено есть сеть плохая,

Как раз в этом случае и необходимо обновлять только по "обновить". Иначе, не сможешь работать.


 
bushmen ©   (2004-07-27 10:56) [12]

> [9] leonidus   (27.07.04 10:53)

Тут уже столько раз об этом говорилось - воспользовались бы поиском.


 
Соловьев ©   (2004-07-27 10:58) [13]


> leonidus   (27.07.04 10:53) [9][Ответить]

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


 
leonidus   (2004-07-27 11:30) [14]

[13] - тут не совсем так, при добавлении новой записи открывается отдельное модальное окно при этом ничего не обновляется, как только инормация внесена, окно закрывается запись довалсяется в базу.
Другими словами кроме как делать кнопку "Обновить" больше идей ни у кого нет?
Может мне просто сконверсить БД из dBase в парадокс и воспользоваться обратным вызовом? Ни ких проблем с конверчиванием базы не будет (индексов в базе нет)?


 
Sandman25 ©   (2004-07-27 11:33) [15]

[14] leonidus   (27.07.04 11:30)

Тут дело даже не в обновлении. У Вас используется TTable, открытие таблицы УЖЕ занимает 10 секунд, и будет только расти по мере добавления данных. И вот вместо того, чтобы перейти на TQuery и запросы, Вы озабочены тем, как бы еще больше замедлить работу, вызывая обновление данных тогда, когда пользователь об этом не просил...


 
leonidus   (2004-07-27 11:40) [16]

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


 
Соловьев ©   (2004-07-27 11:42) [17]


> приложение нельзя считать полноценно клиент-серверным
> ведь БД лежит на том же компьютере на котором работает
> один их двух операторов, второй с другого компьютера
> обращается к певому.

Пока не поздно брось ты эту затею - клиент-сервер с Парадоксом(ужас) Перейди ты на ФБ. Там для обратного вызова есть ивенты.


 
Sandman25 ©   (2004-07-27 11:42) [18]

>без проблем могу перейти и к TQuery, но что это изменит?

Если использовать select * from table1, то ничего.
а вот если добавить where ..., то время загрузки можно сделать 1 сек, причем всегда, практически независимо от размера БД.


 
bushmen ©   (2004-07-27 11:42) [19]

> приложение нельзя считать полноценно клиент-серверным

А что, разве под словом "серверная" подразумевается "ВЫДЕЛЕННЫЙ КОМПЬЮТЕР" ?


 
leonidus   (2004-07-27 11:49) [20]

[18] - ок, я попробую.
[19] - ну в общем случае конечно нет, просто в моем понимании надо отделать сервер от клиентов, может я конечно ошибаюсь


 
bushmen ©   (2004-07-27 11:52) [21]

> в моем понимании надо отделать сервер от клиентов

Но от этого технология не меняется



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

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

Наверх




Память: 0.52 MB
Время: 0.035 c
14-1091351596
Koala
2004-08-01 13:13
2004.08.22
Достали маршрутчики.... Я в гневе...)


11-1079303177
KisaNetik
2004-03-15 01:26
2004.08.22
Помогите с StGrd


6-1087901569
NLO
2004-06-22 14:52
2004.08.22
UDP


14-1091619964
Гость
2004-08-04 15:46
2004.08.22
Загрузка XML на SQL Server с помощью Delphi 7


1-1091715250
arm79
2004-08-05 18:14
2004.08.22
Проблемы с диспетчером памяти..?