SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » MS SQL+Alerts+FireDAC (успешный опыт скрещивания)
MS SQL+Alerts+FireDAC [сообщение #2312] Sun, 21 May 2023 22:48 Переход к предыдущему сообщению
GrigoryFomin в настоящее время не в онлайне  GrigoryFomin
Сообщений: 90
Зарегистрирован: April 2023
Member
У кого-то получилось настроить уведомления от MS SQL сервера в FireDAC? Примеров в сети практически нет, ИИ тоже молчит. Пробовал код из инета:
procedure TChatForm.btn1Click(Sender: TObject);
begin
	qryFireEvents.SQL.Clear;

	if qryFireEvents.Connection.ConnectionMetaDataIntf.EventSupported then begin
		qryFireEvents.Connection.ExecSQL('delete from dbo.Test');
		qryFireEvents.Connection.ExecSQL('insert into dbo.Test values (1, ''Test1'')');

		qryFireEvents.Connection.ExecSQL('delete from dbo.Test2');
		qryFireEvents.Connection.ExecSQL('insert into dbo.Test2 values (1, ''Test2'')');

	end;
end;

procedure TChatForm.ea1Alert(ASender: TFDCustomEventAlerter;
  const AEventName: string; const AArgument: Variant);
var
	i: Integer;
	sArgs: String;
begin
	if VarIsArray(AArgument) then
  begin
		sArgs := '';
		for i := VarArrayLowBound(AArgument, 1) to VarArrayHighBound(AArgument, 1) do
    begin
			if sArgs <> '' then
				sArgs := sArgs + ', ';
			sArgs := sArgs + VarToStr(AArgument[i]);
		end;
	end
	else if VarIsNull(AArgument) then sArgs := '<NULL>'
	else if VarIsEmpty(AArgument) then sArgs := '<UNASSIGNED>'
	else sArgs := VarToStr(AArgument);
	Mem1.Lines.Add('Event - [' + AEventName + '] - [' + sArgs + ']');

end;

procedure TChatForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
	if not ea1.Active then Exit;
	ea1.Unregister;
end;

procedure TChatForm.FormCreate(Sender: TObject);
begin
	if ea1.Active then 	Exit;

	ea1.Names.Clear;

	ea1.Names.Add('QUEUE=?');
	ea1.Names.Add('SERVICE=?');
	ea1.Names.Add('CHANGE1=ev1;select id, name from dbo.Test');
	ea1.Names.Add('CHANGE2=ev2;select id, name from dbo.Test2');
	ea1.Options.Synchronize := True;
	ea1.Register;
end;
На этапе регистрации Alerter выдает такое исключение
Project warehouse.exe raised exception class EFDException with message '[FireDAC][Phys][MSSQL]-326. Cannot perform the action, because the previous action is in 
progress'.
ODBC 18, MS SQL 2022 Developer
 
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: Расчетное число строк на выполнение
Следующая тема: По глупости потерял права SA - как восстановить?
Переход к форуму:
  


Текущее время: Fri May 03 07:12:25 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00893 секунд