Icon View Thread

The following is the text of the current message along with any replies.
Messages 11 to 17 of 17 total
Thread Converting from Paradox: Performance problems
Thu, Jun 29 2006 2:17 PMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Georg


I agree with you. My app started life with the BDE and opens all tables at the logon - it takes c40 secs. I'm rewriting it now and I'll be opening tables as needed but then leaving them open. What it might be worth doing is trying to identify points of first usage and then opening the tables there.

Roy Lambert
Thu, Jun 29 2006 3:11 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Matthew,

<< This is most interesting, as I've not heard of this before. The
documentation on it is sparse (it being part of the base VCL classes and
not yours). Could you tell me (us?) what it actually does please? Is it
essentially a buffering system to speed up looping through the table? >>

It has the same effect as the RemoteReadSize propety:

http://www.elevatesoft.com/dbisam4d5_tdbisamdataset_remotereadsize.htm

--
Tim Young
Elevate Software
www.elevatesoft.com

Thu, Jun 29 2006 3:35 PMPermanent Link

"Ralf Mimoun"
Georg Ledermann wrote:
....
> All TTables are opened at login, all TTables are in a big datamodule
> and dependent on each other (master/detail and lookup fields). It's
> really a very bad design and the best solution would be: Write it new
> from scratch - but this is another project I'm working on. The goal
> for the old app is: Leave the BDE behind and convert the app to
> DBISAM - but with *minimal* changes of the design.

Then you should try DB Extensions from Context Software. Their
TDBISAMTableExt component has a property called "AllowAutoOpen". From the
online help: "If this property is set to True the table will be
automatically opened before performing any read/write operations, like
searching or accessing field values.Default value is False".

Simply replace all TDBISAMTable components by TDBISAMTableExt (and the same
for TDBISAMQuery and TDBISAMDatabase). DB Extensions is a gem, I can't work
without anymore. And I only use maybe 20% of it: automatic updates using a
schema, the Enum datasets and some more tricks.

Ralf
Fri, Jun 30 2006 4:39 AMPermanent Link

Georg Ledermann
"Ralf Mimoun" <nospam@rad-on.de> wrote:

> Then you should try DB Extensions from Context Software. Their
> TDBISAMTableExt component has a property called
> "AllowAutoOpen" [...]

Thanks for this hint. I will give it a try...
Fri, Jun 30 2006 5:41 AMPermanent Link

Many thanks.

/Matthew Jones/
Tue, Jul 4 2006 6:09 AMPermanent Link

Chris Erdal
"Ralf Mimoun" <nospam@rad-on.de> wrote in
news:30583C92-586D-4B9A-A6AB-9A0566D96E57@news.elevatesoft.com:

> Then you should try DB Extensions from Context Software. Their
> TDBISAMTableExt component has a property called "AllowAutoOpen". From
> the online help: "If this property is set to True the table will be
> automatically opened before performing any read/write operations, like
> searching or accessing field values.Default value is False".

Thanks for pointing that out, Ralf. I hadn't noticed it. I've got a second
app. lined up for converting from Paradox with dozens of TTables in a
single Datamodule and all opened at startup. Should be very helpful.

In the meantime I've been using a technique for tables/queries in Forms
consisting of inheriting from a subclassed TForm which opens every
table/query on creation unless its tag is 999. That way you can refactor
little by little, adding open/close for occasional access along with 999 in
the tag.

May be useful to someone.

--
Chris
Fri, Jul 28 2006 11:01 PMPermanent Link

Georg

Try one or both of the following "tricks".  I found them to dramatically
improve the open time of my tDBISAMTables with DevExpress grids (in local
mode - remote not tried).
FYI, The BeginUpdate / EndUpdate block can interfere with DevExpress's
ApplyBestFit!

cxGrid1DBTableView1.BeginUpdate;  //devExpress Grid's View
try
   DBISAMTable1.Open;
finally
   cxGrid1DBTableView1.EndUpdate;
end;

DBISAMTable1.DisableControls;
try
   DBISAMTable1.Open;
finally
   DBISAMTable1.EnableControls;
end;

OR combined...

cxGrid1DBTableView1.BeginUpdate;  //devExpress Grid's View
DBISAMTable1.DisableControls;
try
   DBISAMTable1.Open;
finally
   DBISAMTable1.EnableControls;
   cxGrid1DBTableView1.EndUpdate;
end;

Remove HATES_SPAM from my email address to reply

Chuck Hall




"Chris Erdal" <chris@No-Spam-erdal.net> wrote in message
news:Xns97F67AC6E144314torcatis@64.65.248.118...
> "Ralf Mimoun" <nospam@rad-on.de> wrote in
> news:30583C92-586D-4B9A-A6AB-9A0566D96E57@news.elevatesoft.com:
>
>> Then you should try DB Extensions from Context Software. Their
>> TDBISAMTableExt component has a property called "AllowAutoOpen". From
>> the online help: "If this property is set to True the table will be
>> automatically opened before performing any read/write operations, like
>> searching or accessing field values.Default value is False".
>
> Thanks for pointing that out, Ralf. I hadn't noticed it. I've got a second
> app. lined up for converting from Paradox with dozens of TTables in a
> single Datamodule and all opened at startup. Should be very helpful.
>
> In the meantime I've been using a technique for tables/queries in Forms
> consisting of inheriting from a subclassed TForm which opens every
> table/query on creation unless its tag is 999. That way you can refactor
> little by little, adding open/close for occasional access along with 999
> in
> the tag.
>
> May be useful to someone.
>
> --
> Chris

« Previous PagePage 2 of 2
Jump to Page:  1 2
Image