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


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

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

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

...
Рейтинг: 0 / 0
Выполнение ХП ...
    #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
Выполнение ХП ...
    #32294755
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вобщем сделать нужно именно через потоки (хотя я где-то видел асинхронные вызовы, но это в ADO). Сложность будет заключаться в другом. Я так понимаю тебе нужно не просто позвать процу в потоке, а после этого что-то делать. Вот с этим самым что-то делать и возникнут проблемы. Пример.... могу переслать, но это будет очень много :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Выполнение ХП ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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