Форум: "Базы";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
ВнизStoreProcedure+InterBase Найти похожие ветки
← →
mpokemonov © (2005-11-09 11:05) [0]День добрый! Есть вопрос -база,2 терминала(склад+снабж). IBEvents должен оповестить когда в процедуре изменится состояние идентификатора. В рамках одного приложения работает, в рамках 2-х нет :-(....оба подключениы к одной базе, права есть. Доп. инфо по необходимости. Заранее благодарен :-)
← →
Zacho © (2005-11-09 11:37) [1]Не совсем понятно, в чём именно проблема. Опиши, как именно "не работает". Ошибка какая-то (приведи сообщение об ошибке) или что другое ?
А вообще, забей на эти ивенты. Серьёзно. Во-первых, реально они не нужны (и даже вредны), во-вторых, насколько знаю, ивенты нормально работают начиная с FB 1.5 Впрочем, может Борланд спёр код из FB, но сомневаюсь.
← →
mpokemonov © (2005-11-09 12:32) [2]вот процедура:
create procedure Show_event (event_id integer)
as
begin
if (:event_id=1) then post_event "event1";
exit;
end
регистрация ивентов в IBEvents:
procedure TMainForm.Database1BeforeConnect(Sender: TObject);
begin
if not events1.Registered then
events1.RegisterEvents;
end;
Ивенты:
event1
Передача состояния в процедуру:
store1.Params[0].AsInteger:=Bitbtn1.Tag;
store1.ExecProc;
Transaction1.Commit;
Таг установлен ручками = "1"
Чего должно быть: memo1.lines.add("новая запись"+" "+ inttostr(eventcount));
в рамках одного приложения все работает, не работает если нужно ивент передать к другому, подключенному к базе приложению.Прость ничего не происходит.....никаких ошибок или проблем
← →
Mikolla (2005-11-10 08:39) [3]а где код обработки ивента ?
← →
mpokemonov © (2005-11-10 09:30) [4]исходя из того мануала, которым располагаю, обработка ивента начинается автоматически при отработке StoreProc.execProc+Transaction.commite, в случаях прямого указания связи ивента и процедуры.
Изменение значения параметра процедуры - начало отработки OnEventAlart...
типа того....кстати, в рамках одного приложения все работет "аж бЫгом" :-)
← →
Mikolla (2005-11-10 09:43) [5]
>... обработка ивента начинается автоматически при отработке
> StoreProc.execProc+Transaction.commite...
Ничо не понимаю...
1. Вы передаете в ХП event_id
2. Если event_id=1, IB генерит ивент
3. В D7 поднимается OnEventAlart.
Какие действия делаются по OnEventAlart ?
← →
mpokemonov © (2005-11-10 09:48) [6]memo1.lines.add("новая запись"+" "+ inttostr(eventcount));
← →
Mikolla (2005-11-10 09:53) [7]если нужно оповестить при добавлении новой записи, то почему бы не использовать trigger типа after/before insert ?
← →
Mikolla (2005-11-10 10:05) [8]CREATE TRIGGER RECINSERT FOR NAME_BASE
ACTIVE AFTER UPDATE POSITION 0
AS
begin
post_event "EV_EI_UPD";
end
procedure TMain.IBEvents1EventAlert(Sender: TObject; EventName: String;
EventCount: Integer; var CancelAlerts: Boolean);
begin
> memo1.lines.add("новая запись"+" "+ inttostr(eventcount));
end;
← →
-SeM- (2005-11-10 10:08) [9]Mikolla (10.11.05 10:05) [8]
> при добавлении новой записи
> AFTER UPDATE
Вот только не стыкуется. AFTER INSERT.
← →
mpokemonov © (2005-11-10 10:12) [10]тогда необходимо навешивать еще и InterBase API для регистрации приложений.
Есть мысли почему через процедуру родную не работает?
← →
Mikolla (2005-11-10 10:19) [11]
> Вот только не стыкуется. AFTER INSERT.
ну блин....
CREATE TRIGGER RECINSERT FOR NAME_BASE
ACTIVE AFTER INSERT POSITION 0
AS
begin
post_event "EV_EI_UPD";
end
так устроит ? ;)
> навешивать еще и InterBase API для регистрации приложений.
поясни..
← →
mpokemonov © (2005-11-10 10:22) [12]это я до обновления написал :-)
триггер можно, вопрос о процедуре :-)
← →
-SeM- (2005-11-10 10:31) [13]Mikolla (10.11.05 10:19) [11]
Да мне как-то все равно :)
mpokemonov © (10.11.05 10:12) [10]
Что это?
Что будет если в [2] Commit по каким-то причинам не пройдет?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c