![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StoreProcedure+InterBase [D7, IB7.x]
mpokemonov © (2005-11-09 11:05:00)День добрый! Есть вопрос -база,2 терминала(склад+снабж). IBEvents должен оповестить когда в процедуре изменится состояние идентификатора. В рамках одного приложения работает, в рамках 2-х нет :-(....оба подключениы к одной базе, права есть. Доп. инфо по необходимости. Заранее благодарен :-)
-SeM- (2005-11-10 10:31:00) [1]Mikolla (10.11.05 10:19) [11]
Да мне как-то все равно :)
mpokemonov © (10.11.05 10:12) [10]
Что это?
Что будет если в [2] Commit по каким-то причинам не пройдет?
mpokemonov (2005-11-10 10:22:00) [2]это я до обновления написал :-)
триггер можно, вопрос о процедуре :-)
Mikolla (2005-11-10 10:19:00) [3]
> Вот только не стыкуется. 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:12:00) [4]тогда необходимо навешивать еще и InterBase API для регистрации приложений.
Есть мысли почему через процедуру родную не работает?
-SeM- (2005-11-10 10:08:00) [5]Mikolla (10.11.05 10:05) [8]
> при добавлении новой записи
> AFTER UPDATE
Вот только не стыкуется. AFTER INSERT.
Mikolla (2005-11-10 10:05:00) [6]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;
Mikolla (2005-11-10 09:53:00) [7]если нужно оповестить при добавлении новой записи, то почему бы не использовать trigger типа after/before insert ?
mpokemonov (2005-11-10 09:48:00) [8]memo1.lines.add('новая запись'+' '+ inttostr(eventcount));
Mikolla (2005-11-10 09:43:00) [9]
>... обработка ивента начинается автоматически при отработке
> StoreProc.execProc+Transaction.commite...
Ничо не понимаю...
1. Вы передаете в ХП event_id
2. Если event_id=1, IB генерит ивент
3. В D7 поднимается OnEventAlart.
Какие действия делаются по OnEventAlart ?
mpokemonov (2005-11-10 09:30:00) [10]исходя из того мануала, которым располагаю, обработка ивента начинается автоматически при отработке StoreProc.execProc+Transaction.commite, в случаях прямого указания связи ивента и процедуры.
Изменение значения параметра процедуры - начало отработки OnEventAlart...
типа того....кстати, в рамках одного приложения все работет "аж бЫгом" :-)
Mikolla (2005-11-10 08:39:00) [11]а где код обработки ивента ?
mpokemonov (2005-11-09 12:32:00) [12]вот процедура:
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));
в рамках одного приложения все работает, не работает если нужно ивент передать к другому, подключенному к базе приложению.Прость ничего не происходит.....никаких ошибок или проблем
Zacho (2005-11-09 11:37:00) [13]Не совсем понятно, в чём именно проблема. Опиши, как именно "не работает". Ошибка какая-то (приведи сообщение об ошибке) или что другое ?
А вообще, забей на эти ивенты. Серьёзно. Во-первых, реально они не нужны (и даже вредны), во-вторых, насколько знаю, ивенты нормально работают начиная с FB 1.5 Впрочем, может Борланд спёр код из FB, но сомневаюсь.