Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как "поймать" сообщения при выполнении запросов к MSSQL


Layner ©   (2005-02-21 14:45:00) 

в своей программе? Т.е. например, из своей программы выполняю PRINT GETDATE();, как бы возвращаемую строчку загнать в Memo?


Desdechado   (2005-02-21 17:54:00) [1]

дык вызывай нужную функцию в select'е, если знаешь, как она называется


Layner   (2005-02-21 16:49:00) [2]

Правда то что выдает QA, включает ответы типа
(1000 row(s) affected)
Но и эта процедура, с принтом, нормально.


Layner   (2005-02-21 16:45:00) [3]

Zz_
Спасибо!
Сейчас немного доработаю для своих потребностей, все ОК!


Layner   (2005-02-21 16:39:00) [4]

Desdechado
А если мне надо получить репорт, сколько строк удалилось и т.п. с помощью твоего кода?
Т.е. надо как нижняя часть в Query Analyzer.
Zz_ , сейчас посмотрю.


Zz_   (2005-02-21 16:30:00) [5]

CREATE PROCEDURE [dbo].[MySP]
AS
  set nocount on
  print 'print 1'
  select 1
  print 'print 2'
  select 2
  print 'print 3'
  select 3
  print 'print 4'
  select 4
  return(0)
GO


uses ADOInt,ComObj;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var cmd  : _Command;
   rs   : _RecordSet;
   Conn : _Connection;
   Pars : Parameters;
   RA   : OleVariant;
   n    : Integer;
begin
 ListBox1.Clear;
 Conn := CreateComObject(CLASS_Connection) as _Connection;
 Conn.ConnectionString := ...
 Conn.Open(Conn.ConnectionString,'','',Integer(adConnectUnspecified));
 cmd := CreateComObject(CLASS_Command) as _Command;
 cmd.CommandType := adCmdStoredProc;
 cmd.Set_ActiveConnection(Conn);
 Pars := cmd.Parameters;
 Pars.Append(cmd.CreateParameter('@RETURN',adInteger,adParamReturnValue,4,0));

 cmd.CommandText := 'dbo.MySP';
 rs := cmd.Execute(RA,Pars,Integer(adCmdStoredProc));
 while True do begin
   for n:=0 to(Conn.Errors.Count-1)do begin
     ListBox1.Items.Add(Conn.Errors.Item[n].Description);
   end;
   rs := rs.NextRecordset(RA);
   if(rs=nil)then break;
 end;

 cmd.Set_ActiveConnection(nil);
 Conn.Close;
 Pars := nil;
 cmd  := nil;
 Conn := nil;
end;


Desdechado   (2005-02-21 15:10:00) [6]

а не пробовал делать
insert into tbl (memo_field) values (getdate());


Наверх

Титульная страница Поиск, карта сайта Написать письмо