Selemlar,
FDEventAlerter kullanarak iki uygulama arasında bilgi alıyorum. Fakat garip bir sıkıntı var.
İki uygulamada if OnlineOK then ve if OfflineOK then doğru çalışırken if CloseOK then sadece bir uygulamada devreye giriyor, diğer uygulama tepki vermiyor.
Bu sorun neden kaynaklı olabilir?
FDEventAlerter kullanarak iki uygulama arasında bilgi alıyorum. Fakat garip bir sıkıntı var.
İki uygulamada if OnlineOK then ve if OfflineOK then doğru çalışırken if CloseOK then sadece bir uygulamada devreye giriyor, diğer uygulama tepki vermiyor.
Bu sorun neden kaynaklı olabilir?
procedure TMainForm.FDEventAlerterTimeout(Sender: TObject);
var
FDQ, uFDQ: TFDQuery;
AlertId: Integer;
OnlineOK, OfflineOK, ClosedOK: Boolean;
begin
if SameText(AlertMessage, 'Message!') then
begin
FDQ := TFDQuery.Create(nil);
FDQ.Connection := FDConnection;
uFDQ := TFDQuery.Create(nil);
uFDQ.Connection := FDConnection;
try
FDQ.Active := False;
FDQ.Close;
FDQ.SQL.Clear;
FDQ.SQL.Text := 'SELECT * FROM USERS WHERE USERNAME<>:USER AND OPERATION IS NOT NULL AND TRIM(OPERATION) <> '''';';
FDQ.ParamByName('USER').AsString := Users; // Mevcut kullanıcı hariç
FDQ.Prepared := True;
FDQ.Open;
while not FDQ.Eof do
begin
AlertId := FDQ.FieldByName('ID').AsInteger;
OnlineOK := SameText(FDQ.FieldByName('OPERATION').AsString, 'Online');
OfflineOK := SameText(FDQ.FieldByName('OPERATION').AsString, 'Offline');
ClosedOK := SameText(FDQ.FieldByName('OPERATION').AsString, 'Closed');
if OnlineOK then
ShowMessage(FDQ.FieldByName('USERNAME').AsString + ' Online!');
if OfflineOK then
ShowMessage(FDQ.FieldByName('USERNAME').AsString + ' Offline!');
if ClosedOK then
ShowMessage(AlertId.ToString + ' Close!'); // AYNI ANDA ÇALIŞAN 2 UYGULAMADAN SADECE BİRİ YAKALIYOR DİĞER YAKALAMIYOR
FDQ.Next;
end;
uFDQ.Active := False;
uFDQ.Close;
uFDQ.SQL.Clear;
uFDQ.SQL.Text := 'UPDATE USERS SET OPERATION=:OPER';
uFDQ.ParamByName('OPER').AsString := EmptyStr;
uFDQ.ExecSQL;
finally
FDQ.Free;
uFDQ.Free;
AlertMessage := 'No!';
end;
end;
end;

