Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Выполнение ХП ... / 5 сообщений из 5, страница 1 из 1
13.10.2003, 11:49
    #32291051
Антон Ковалев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП ...
Здравствуйте!
Как сделать так чтобы при выполнении ХП прога откликалась на клики?


ЗЫ Если надо отдельный поток делать, то киньте примерчик плз, ибо с потоками не связывался...
...
Рейтинг: 0 / 0
14.10.2003, 18:11
    #32293169
Антон Ковалев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП ...
Незнаете или вопрос тупой?
...
Рейтинг: 0 / 0
14.10.2003, 19:58
    #32293313
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП ...
нет, вопрос не тупой.

И ты сам на него почти ответил.
Действительно, выполнение ХП надо запускать отдельным потоком (или процессом).

Как?
Когда я этим интересовался, я с первой попытки нашёл кучу примеров в инете, и даже в хэлпе (SDK) что-то на эту тему есть.
Так что дерзай. Результатами не забудь поделиться :))

...
Рейтинг: 0 / 0
15.10.2003, 11:18
    #32293767
harrytv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП ...
Ниже пример unita с нитью. Еще ниже - вызов ее из основной процедуры.
В DataSet пропиши свою sp. Это что первое попалось из исходников - возможны варианты ...

unit thread;

interface

uses Classes, SysUtils, ADODB, DB, ISA_main, ComCtrls;

type
TSQLThread = class(TThread)
FADODataSet: TADODataSet;
private
FProgress: integer;
procedure Init;
procedure Finit;
procedure OnTerminate(Sender: TObject);
protected
procedure Execute; override;
end;

var
SQLThread : TSQLThread;

implementation

procedure TSQLThread.Execute;
begin
try
Synchronize(Init);
FADODataSet.CommandTimeout := TIMEOUT;
FADODataSet.Open;
finally
Synchronize(Finit);
end;
end;

procedure TSQLThread.Init;
begin
with Form_ISA do begin
StatusBar_Main.Panels[0].Text := '';
PageControl_Main.Enabled := False;
ToolButton_Select.Enabled := False;
ToolButton_Excel.Enabled := False;
FAnimate.Left := Round(FAnimate.Parent.ClientWidth/2);
FAnimate.Top := Round(FAnimate.Parent.ClientHeight/2);
FAnimate.Visible := True;
FAnimate.Active := True;
end;
//Form_Msg.Show;
end;

procedure TSQLThread.Finit;
var
Hour, Min, Sec, MSec: Word;
begin
with Form_ISA do begin
ToolButton_Select.Enabled := True;
ToolButton_Excel.Enabled := True;
PageControl_Main.Enabled := True;
DecodeTime((Time - TIMESTAMP), Hour, Min, Sec, MSec);
StatusBar_Main.Panels[0].Text := 'Çàïðîñ ñôîðìèðîâàí â ' + TimeToStr(Time) + ' / ';
StatusBar_Main.Panels[0].Text := StatusBar_Main.Panels[0].Text + 'Âðåìÿ âûïîëíåíèÿ: ' + IntToStr(Min) + 'm:' + IntToStr(Sec) + 's:' + IntToStr(MSec) + 'ms';
StatusBar_Main.Panels[1].Text := ' @' +IntToStr(FADODataSet.RecordCount);
FAnimate.Visible := False;
FAnimate.Active := False;
end;
end;

procedure TSQLThread.OnTerminate;
begin
;
end;

end.

Это в основном потоке:

SQLThread := TSQLThread.Create(True);
SQLThread.FreeOnTerminate := True;
SQLThread.Priority := tpNormal;
SQLThread.FADODataSet := FADODataSet;
SQLThread.Resume;
...
Рейтинг: 0 / 0
16.10.2003, 04:50
    #32294755
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП ...
вобщем сделать нужно именно через потоки (хотя я где-то видел асинхронные вызовы, но это в ADO). Сложность будет заключаться в другом. Я так понимаю тебе нужно не просто позвать процу в потоке, а после этого что-то делать. Вот с этим самым что-то делать и возникнут проблемы. Пример.... могу переслать, но это будет очень много :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Выполнение ХП ... / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]