Subject Re: [IBO] Timers in Delphi during a DSQL execute
Author russellbelding
Thank you Martijn
It occurred to me after posting I could write the timer in a separate
thread ... thanks for confirmation.
Russell

--- In IBObjects@yahoogroups.com, "Martijn Tonies" <m.tonies@...>
wrote:
>
> Hello Russel,
>
> > Not sure if this is a proper IBO question ...
> >
> > I run a lengthy stored procedure whose execution time I estimate
and
> > during its execution would like to update a progress bar on a
TTimer
> > event. When Execute is entered the TTimer event is effectively
> > suspended. It is not called. Is this expected? Can I do something
> > else
> > to achieve updating a progress bar?
> >
> > dm is a data module used by the form containing the code below.
The
> > TTimer is in the code module.
> >
> > with dm.dsqlWrite do
> > begin
> > SQL.Text := 'execute procedure CALC_CONTACT2_RECS ' +
> > QuotedStr(DateToIBDate( TDate(DTStart.date)))+', '+
> > QuotedStr(DateToIBDate( TDate(DTEnd.date)));
> > Prepare;
> > Execute;
> > // TTimer event not called while in Execute
>
> If you use Execute, the applications main thread will wait until it
> returns and not process any windows messages. In order for TTimer
> to work, the application has to respond to windows messages.
>
> If you want this to work, execute the procedure in a thread.
>
> > contact2ID := fields[0].AsInteger;
> > RecCount := fields[1].asInteger;
> > end;
>
> Martijn Tonies
> Database Workbench - development tool for Firebird and more!
> Upscene Productions
> http://www.upscene.com
> My thoughts:
> http://blog.upscene.com/martijn/
> Database development questions? Check the forum!
> http://www.databasedevelopmentforum.com
>