Получение всех принтов из запроса
Получение всех принтов из запроса
Добрый день! Подскажите, как обстоят в SDAC дела с получением вывода оператором print? В ADO много ограничений, например необходимо, что бы курсор был серверным, set nocount on везде ставить. Спасибо!
С уважением, Константин
С уважением, Константин
Re: Получение всех принтов из запроса
Здравствуйте,
Для получения вывода оператора PRINT, Вам следует использовать событие TMSConnection.OnInfoMessage. Пример кода:Заметьте что для выполнения данного кода, Вам следует добавить модуль OLEDBAccess в секцию USES Вашего модуля.
Данный код выполняется с использованием клиентского курсора (TMSQuery использует его по умолчанию) и на него не влияет оператор "SET NOCOUNT".
Для получения вывода оператора PRINT, Вам следует использовать событие TMSConnection.OnInfoMessage. Пример кода:
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
MSQuery1.SQL.Text := 'PRINT ''testing''';
MSQuery1.Execute;
end;
procedure TForm1.MSConnection1InfoMessage(Sender: TObject; E: EMSError);
begin
ShowMessage(E.Message);
end;
Данный код выполняется с использованием клиентского курсора (TMSQuery использует его по умолчанию) и на него не влияет оператор "SET NOCOUNT".
Re: Получение всех принтов из запроса
А подскажите как этот же результат получить для MS SQL?
Re: Получение всех принтов из запроса
Пример приведенный в предыдущем посте демонстрирует работу как раз с MS SQL Server
Re: Получение всех принтов из запроса
Тогда, если можно, поясните откуда взять
MSConnection1InfoMessage
и
зачем нужен курсор?
Может я что-то не понимаю?
Мне нужно выполнить скрипт на 6000 строк. Для отладки я добавляю в код
в дельфи это вот так
Как вывести эту строку на форму?
ЗЫ скрипт запихиваю в UniScript
MSConnection1InfoMessage
и
зачем нужен курсор?
Может я что-то не понимаю?
Мне нужно выполнить скрипт на 6000 строк. Для отладки я добавляю в код
Код: Выделить всё
print 'Ошибка Номер ХХХ'
Код: Выделить всё
UniQuery1.SQL.Text:='print ''Ошибка Номер ХХХ''';
ЗЫ скрипт запихиваю в UniScript
Re: Получение всех принтов из запроса
Cобытие onInfoMessage реализовано в компоненте TMSConnection.
Пример получения сообщения приведен в предыдущем посте
Пример получения сообщения приведен в предыдущем посте
Re: Получение всех принтов из запроса
У меня Delphi XE и UniDac.Alexp писал(а):Cобытие onInfoMessage реализовано в компоненте TMSConnection.
Пример получения сообщения приведен в предыдущем посте
У меня нет TMSConnection.
Можно реализовать вывод без этого компонента?
Re: Получение всех принтов из запроса
Команда PRINT есть только в MS SQL Server поэтому возможность работы с ней реализована только в SDAC, в UniDAC Вы не сможете получать эти ссобщения
Re: Получение всех принтов из запроса
спасибо, все работает
но теперь появился другой вопрос
команда
выдает
но если делать в рабочем коде
Начинает ругаться встроенный редактор кода так как теряется контекст БД.
Начали добавлять
Ругаться перестало, но теперь код
выдает только
Подскажите пожалуйста (если поняли)
но теперь появился другой вопрос
команда
Код: Выделить всё
print '123'
go
print '321'
Код: Выделить всё
123
321
Код: Выделить всё
print CONVERT(nvarchar,GETDATE(),103) + ' : Начинаю обновление патчем от разработчика.'
GO
ALTER PROCEDURE [dbo].[i_imp_FrontolAtol_DataType_Article] (@DriverID AS INT, @SectionID AS INT, @LIVersion AS BIGINT)
AS
BEGIN
SET NOCOUNT ON
...
print ''
Начали добавлять
Код: Выделить всё
MSScript1.SQL.Insert(0,'Use sms_tech');
Код: Выделить всё
print '123'
go
print '321'
Код: Выделить всё
123
Re: Получение всех принтов из запроса
Пожалуйста приведите либо полный текст скрипта, либо создайте небольшой скрипт, который воспроизводит проблему и пришлите его нам что бы мы могли повторить описанную вами ситуацию
Re: Получение всех принтов из запроса
вот этот файл нужно выполнить и вывести на форму команду print которая идет в конце
в Студии выводится
как делаю я
В свойствах MSScript стоит DataSet=MSQuery1. И к этому MSQuery1 ваш обработчик с E.Message
PS файл это не ZIP
в Студии выводится
как делаю я
Код: Выделить всё
MSScript1.SQL:=RzMemo1.Lines;
MSConnection1.Connected:=True;
MSScript1.Execute;
MSConnection1.Connected:=False;
PS файл это не ZIP
- Вложения
-
- 2.sql.zip
- (7.8 КБ) 259 скачиваний
Re: Получение всех принтов из запроса
Пришлите также скриты для создания объетов БД
P.S. В данный момент при выполнении вашего скритпа Вылаеться ошибка о том что процедура несуществует, а затем выводиться сообщение 'done'
P.S. В данный момент при выполнении вашего скритпа Вылаеться ошибка о том что процедура несуществует, а затем выводиться сообщение 'done'
Re: Получение всех принтов из запроса
спасибо огромное за помощь
ошибку нашли - это оказались огромные комментарии вот такого вида --********
разработчики вписали туда очень много звездочек и, видимо, скрипт обрезал строку и на новой оказывали незакоментированные ****.
еще раз спасибо.
ЗЫ а если можно добавить возможность отлавливать print в unidac - было бы вообще замечательно.
удалите пожалуйста мои сообщения.
ошибку нашли - это оказались огромные комментарии вот такого вида --********
разработчики вписали туда очень много звездочек и, видимо, скрипт обрезал строку и на новой оказывали незакоментированные ****.
еще раз спасибо.
ЗЫ а если можно добавить возможность отлавливать print в unidac - было бы вообще замечательно.
удалите пожалуйста мои сообщения.
Re: Получение всех принтов из запроса
Эта возможность поддерживаеться только в SQL Server, а так как UniDAC предназначен для работы со многими БД мы не можем реализовать это поведение так как в других серверах оно не поддерживаеться.