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

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

Как получить результат запроса ADOQuery ? [D6, MSSQL]


dreamse ©   (2005-10-05 11:22:00) 

SQL код в SyntaxMemo1 :


backup database mybase
TO disk = 'c:\Back.bak'  


Код в Delphi :


ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=SyntaxMemo1.Lines.Text;
try
 ADOQuery1.ExecSQL;
except
   on e:exception do
     listerrors(e); // Обработчик ошибки


try Except обрабатываються синтаксические ошибки при создани запроса а вот как вернуть ответ от MS SQL server'a ?
В данном случае должно возвратиться сообщение о успешной или не успешной операции  ( + время + размер и пр. )

Компоненты :

ADOQuery
ADOConnection

Сам код обрабатываеться нормально.


dreamse   (2005-10-05 13:29:00) [1]

> sniknik

Спасибо , разобрался , всё работает
Нужно было вставить : ComObj


dreamse   (2005-10-05 12:58:00) [2]

Ругаеться на CreateComObject может что в uses прописать забыл ?


sniknik   (2005-10-05 12:39:00) [3]

при локальном курсоре посылается не все, чтото не посылает сообщений вообше... (еще возможна путаница в "обертке" ADO)

но
backup database mybase
TO disk = 'c:\Back.bak'  
точно посылает (делал тестовую прогу когдато, для другого, сейчас проверил бекап) выдает
Processed 4712 pages for database 'hl', file 'hotline_Data' on file 14.
Processed 1 pages for database 'hl', file 'hotline_Log' on file 14.
BACKUP DATABASE successfully processed 4713 pages in 2.935 seconds (13.152 MB/sec).

(база моя естественно подтавлена, самую маленькую выбрал)

можеш сам проверить. код (один из возможных), взял тот где исключены(должны бы) всякие случайности в виде настроек/обертки...

uses ..., ADOInt;

TForm1 = class(TForm)
   ...
   Memo1: TMemo;
  ...
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 cmd: _Command;
 Conn: _Connection;
 Pars: Parameters;
 RA: OleVariant;
 rs: _Recordset;
 n: Integer;
begin
 Conn:= CreateComObject(CLASS_Connection) as _Connection;
 Conn.ConnectionString:= 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False';
 Conn.Open(Conn.ConnectionString, '', '', Integer(adConnectUnspecified));

 cmd:= CreateComObject(CLASS_Command) as _Command;
 cmd.CommandType:= adCmdText;
 cmd.Set_ActiveConnection(Conn);

 cmd.CommandText:= 'backup database mybase'#10#13+
                   'TO disk = ''c:\Back.bak''';
 rs:= cmd.Execute(RA, 0, Integer(adCmdText));

 while rs <> nil do begin
   for n:= 0 to (Conn.Errors.Count-1) do
     Memo1.Lines.Add(Conn.Errors.Item[n].Description);
   rs:= rs.NextRecordset(RA);
 end;

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


должно сработать "as is".


dreamse   (2005-10-05 12:11:00) [4]

> sniknik

Посмотрел ,

ADOConnection1.Errors.count = 0

Ничего нет :(


sniknik   (2005-10-05 12:09:00) [5]

dreamse   (05.10.05 11:49) [2]
> Добавление обработчика в :
> ADOConnectionInfoMessage
как именно "обрабытавал"?

кроме всего поставь у квери CursorLocation:= clUseServer;

ANB ©   (05.10.05 11:54) [3]
>  - при чем тут эти обработчики ?
ну один то точно причем. ;) в нем возвращаются все сообщения конекта, в том числе и ошибки.


ANB   (2005-10-05 11:54:00) [6]


> dreamse   (05.10.05 11:49) [2]
- при чем тут эти обработчики ? В errors лежат все сообщения от сервера, в том числе и не ошибки. Заполняется полностью после выполнения запроса.


dreamse   (2005-10-05 11:49:00) [7]

> sniknik

Добавление обработчика в :


ADOConnectionInfoMessage
ADOConnectionExecuteComplete
ADOConnectionRollbackTransComplete
ADOConnectionWillExecute
ADOConnectionCommitTransComplete
ADOConnectionBeginTransComplete


Не принесло никакого результата


sniknik   (2005-10-05 11:35:00) [8]

посмотри в ADOConnection1.Errors,  информационные сообщения это те же ошибки, только с пониженным статусом(кодом).


Наверх

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