Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FDEventAlerter Yakalama Sorunu
#1
Merhabalar,


Ortak ağda kullandığım Firebird databasede var.

Databasenin olduğu bilgisayarda, DB'ye Insert yapılınca FDEventAlerter hemen yakalıyor. 
Ortak ağadaki diğer bilgisayar ise Insert yapılınca bir çoğunu yakalamıyor. Bu durum neden kaynaklı olabilir?


   { CREATE TRIGGER }
      FDQuery.Connection := FDConnection;
      FDQuery.Active := False;
      FDQuery.Close;
      FDQuery.SQL.Clear;
      FDQuery.SQL.Add(' CREATE TRIGGER CONTROL FOR LINKLER');
      FDQuery.SQL.Add(' ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0');
      FDQuery.SQL.Add(' AS');
      FDQuery.SQL.Add(' BEGIN ');
      FDQuery.SQL.Add(' IF (INSERTING) THEN ');
      FDQuery.SQL.Add(' POST_EVENT ''INSERT''; ');
      FDQuery.SQL.Add(' ELSE ');
      FDQuery.SQL.Add(' IF (UPDATING) THEN ');
      FDQuery.SQL.Add(' POST_EVENT ''UPDATE''; ');
      FDQuery.SQL.Add(' ELSE ');
      FDQuery.SQL.Add(' POST_EVENT ''DELETE''; ');
      FDQuery.SQL.Add(' END ');
      FDQuery.ExecSQL;




 
  
  procedure TMainForm.FormCreate(Sender: TObject);
 begin
   FDEventAlerter.Connection := FDConnection;
    FDEventAlerter.Active := False;
    FDEventAlerter.Names.Clear;
    FDEventAlerter.Names.Add('INSERT');
    FDEventAlerter.Options.Synchronize := True;
    FDEventAlerter.Options.Timeout := 10000;
    FDEventAlerter.OnAlert := FDEventAlerterAlert;
    FDEventAlerter.Register;
    FDEventAlerter.Active := True;
end;


procedure TMainForm.FDEventAlerterAlert(ASender: TFDCustomEventAlerter; const AEventName: string; const AArgument: Variant);
begin
  if CompareText(AEventName, 'INSERT') = 0 then
  begin
   Listelerim(Self);
  end;
end;
Cevapla
#2
Merhaba
Öncelikle Uygulama tarafından sürekli Trigger Create etmeye çalışmayın. Yapacaksanızda öncelikle Trigger var mı kontrolünü yapın, yoksa Create edin. Database tarafında Trigger oluşturulduğunu varsayarak;

procedure TMainForm.FormCreate(Sender: TObject);
begin
   FDEventAlerter.Connection := FDConnection;
   FDEventAlerter.Active        := False;
   FDEventAlerter.Names.Clear;
   FDEventAlerter.Names.Add('INSERT');
   FDEventAlerter.Options.Synchronize := True;
   FDEventAlerter.Options.Timeout      := 10000;
   FDEventAlerter.OnAlert := FDEventAlerterAlert;
   FDEventAlerter.OnTimeout := 10000;
   FDEventAlerter.Active := True;
   FDEventAlerter.Register; 
end;
Gölge etme başka ihsan istemem.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Button Renk sorunu CesuR 3 642 21-05-2026, Saat: 04:29
Son Yorum: emailx45
  Win 11 ve Delphi 7 Minimize sorunu. enigma 7 1.086 11-02-2026, Saat: 10:27
Son Yorum: RAD Coder
  Delphi SLL kullanım sorunu Bay_Y 12 2.195 22-12-2025, Saat: 18:11
Son Yorum: Bay_Y
  Delphi ile SQL server bağlantı hatası yakalama Under 20 3.157 21-11-2025, Saat: 15:24
Son Yorum: mrmarman
  CxGrid Türkçe karakter sorunu mur93 1 533 12-11-2025, Saat: 09:22
Son Yorum: cinarbil



Konuyu Okuyanlar: 1 Ziyaretçi