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;