Сантехнические перегородки.
C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
IBEvents, работа с компонентом
GuRu
Отправлено: 17.07.2003, 18:53


Ученик-кочегар

Группа: Участник
Сообщений: 5



Здраствуйте... у меня возникла проблема при использовании компонента IBEvents...
возможно я делаю что-то не так...подскажите пожалуйста...

// таблица
CREATE TABLE N_TABLE(
N integer
)

//триггер
CREATE TRIGGER T_TABLE FOR N_TABLE
AFTER INSERT AS
BEGIN
POST_EVENT "INSERT N_TABLE";
END


...произвожу подключение к БД...


IBEvents1->Events->Add("INSERT N_TABLE");
IBEvents1->Registered=true


void __fastcall TForm1::IBEvents1EventAlert(TObject *Sender,
AnsiString EventName, int EventCount, bool &CancelAlerts)
{

//... какое-то действие

}

... в результете получаю ошибку! при попытке запустить программу
Гость_pasha
Отправлено: 19.07.2003, 13:21


Не зарегистрирован







Приведите код.
У меня все работает:

CODE

//---------------------------------------------------------------------------

void __fastcall TForm1::IBEvents1EventAlert(TObject *Sender,
AnsiString EventName, int EventCount, bool &CancelAlerts)
{

if(EventName == "BreakWork")
ShowMessage("PostMessage_BreakWork !");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
IBTable1->Open();

IBEvents1->Events->Add("BreakWork");
IBEvents1->Registered = true;
}
//------------------------------------------------------


Единственное, это в триггере поставьте одинарные кавычки
и наверное лучше имя события без пробела.

CREATE TRIGGER AI_N_TABLE FOR N_TABLE
AFTER INSERT AS
BEGIN
POST_EVENT 'BreakWork';
END


Заметил, что менее глючно все работает, если
у IBEvents изначально стоит AutoRegister в true
и событие в Events уже зарегистрировано в Events
(а не добавляется по ходу программы) и
еще имя событие регистрочувствительное.

Отредактировано Admin — 19/07/2003, 14:25

Вернуться в Работа с базами данных в C++Builder