TDBISAMQuery issues

Hello everyone.
I'm using a TDBISAMQuery in our application and every once in a while, it errors out on ExecSQL. I believe the problem is the query object is trying to access one of its cached results when it is locked.
This error is very sporadic and hard to reproduce. However, this error does exist and I was hoping someone knows of a solution or work around.

Thanks,
Rob
LVL 2
RobnAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Mohammed NasmanSoftware DeveloperCommented:
Hello

 Your comments doesn't help much, Can you please tell us which version you are using from DBIsam, the error message that you got, and a part from the code that produce the error, thanx :-)
0
RobnAuthor Commented:
The engine version is 3.20.
The code looks something like this

  FQuery := TDBISAMQuery.Create(nil);
  try
    FQuery.DatabaseName := TablePath;
    FQuery.SQL.Text := 'SELECT * FROM <TABLENAME>';
    FQuery.ExecSQL;  <-- This line produces the error.
    {...}
  finally
    FQuery.Free;
  end;

The exception that is created is something to the effect of "Access Denied" to some cache file. I can't remember the exact message but I'll post it if I see it again.

I really dislike this component but this is what the company ordered so this is what I'm stuck with at the moment.

Thanks,
Rob
0
RobnAuthor Commented:
ok, I got the error
EDBISAMEngineError
"DBISAM Engine Error # 11013 Access denied to table 'C:\...\37080.IDX'.

37080.IDX is a cache file generated by TDBISAMQuery.

Any takers on this error and how to fix it?

Thanks,
Rob
0
Angular Fundamentals

Learn the fundamentals of Angular 2, a JavaScript framework for developing dynamic single page applications.

Mohammed NasmanSoftware DeveloperCommented:
Hello Rob

  First of all, try to update the engine to the lastest version, it's now 3.27, many bugs fixed from the version 3.20

this error happen when you open the table as exclusive mode, insure that there's any table components opening the same table with exclusive property is true

>> I really dislike this component

DBIsam is one of the best replacement of BDE, it's good engine and reliable too
0
Mohammed NasmanSoftware DeveloperCommented:
hmm, the IDX is index file not data file

Can you tell us more info please, are you using dbisam client/side or standard edition
are you accessing the database at same computer or from network

try adding session components, and set PrivateDir to a folder which you want the engine to create the temp files on it,

if you still have problems, try to verify the database and repair it, maybe some errors happen or indexed are corrupted

HTH
0
RobnAuthor Commented:
My company ordered this component so I don't know if I can upgrade to the latest version or not.
The IDX file (in this case) is a cache file that this component creates. The databases are fine. I'm also using the DBISAM table component to access the tables in some cases and this works without a problem.
These errors happen when using the application locally on my machine. No other connections to the tables are open from other processes.
I know DBISAM is a poor client server database component but these errors are all local. Although I'm sure they appear every once in a while to our clients. I know our QA department has seen this error before. However, when not debugging the software, the error appears as an access violation in the VCL.

These session components you talk about, are these objects that are assigned to the query component?

Thanks,
Rob
0
Mohammed NasmanSoftware DeveloperCommented:
>>I don't know if I can upgrade to the latest version or not
you can get the lastest updates free

>>I know DBISAM is a poor client server database component
there's edition for C/S which work betters in C/S enviromant, it's not powerful like Oracle or Ms Sql server, but it's widely used with Delphi and C++Builder

>>These session components you talk about, are these objects that are assigned to the query component?
Yes, you can add one to the Data Module and assign all the tables and query to it

if you still have the problem after updating to latest edition, contact the ElevateSoft, they are very helpful and their support is great

you can ask them in their newsgroups or via email, here's the page support

http://www.elevatesoft.com/support.htm
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
RobnAuthor Commented:
Thank you mnasman!
0
RobnAuthor Commented:
I upgraded to version 3.27 and it works. The exception is still raised once by the component but it is now handled better. The application used to become very unstable and would cause all sorts of errors when closing down. Now the application continues to run and closes properly even when the error happens.
Thank you for the tip mnasman!

Regards,
Rob
0
Mohammed NasmanSoftware DeveloperCommented:
Hi Rob
I'm glad that's working better with you now, keep your eyes in ElevateSoft site for other updates

and thanks for the points too :-)

Regards,
Mohammed Nasman
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.