Subject strange intermitent Access Violation errors likely due to a conversion issue?
Author bwc3068

I've brought this over from the Firebird group.

Helen's last response is below.

I trust the "Migration and Installation Guide" is for Firebird that I should refer too? I did look at what I think is the release notes of IBO 4.8.7 and....I think i've got a couple issues.

here's a couple questions:

would any of the below cause the error to not be showing up every time? most troubling to me is that I cannot ever duplicate the Access Violation errors the customers see on my own PC with their database. Even when I Citrix in to their system, i cannot duplicate the errors. and? they don't happen every time to the customer either (exact same keystrokes by them do not generate the problem everytime even though it's the exact same SQL and, obviously, code in my application).

1) in my BDE application, I used wwQuery. I did NOT install and use IPIBODataset.pas to get and use wwIBOQuery. instead, I use IBOQuery's. should i switch them all to wwIBOQuery? would that matter for the SQL itself (ie. it doesn't make it to the grid before it AVs out)

2) i do a lot of
select p.*, l.* from MdPartL P, LinksMP L
where P.uniqueKey = L.partUniqueKey
L.ModelUniqueKey = :UniqueKey

it reads like that is a total no-no with FB2.1 and IBO 4.8.7. Would that not being a proper "join" syntax, would that cause an AV Error everytime or just once in a while?

3) i do have persistent fields in persistent queries in my datamodule...sounds like for the few queries that are in the functions that are AV erroring, I should delete the fields and re-add them. I will do this.

4) the KeyLink property...i don't explicity set it. would that cause AV errors all the time or could it be just once in a while for the exact same SQL? i should set those too....

i use Firebird-

I will explore more and look forward to any suggestions!


> >i'm using FB 2.1, IBO 4.8.7 and D6
> >
> >it's tough to put a finger on the "problem" because it's not a constant issue. on my computer when i run the application against the DB's i've received from my customers, I never see the problem.
> This has nothing to do with server speed.
> Since this is mostly off-topic here, I won't repost all your original details, just make some comments.
> 1. IBO 4.8.7 was a substantial revamping to support the API changes in Fb 2.1. While the client library in Fb 2.1 is backward-compatible with older servers, the reverse isn't true. If your customers' installations of your application are accessing the v.2.1 database server using an older client library it is not at all unlikely that your IBO 4.8.7 application will be having AVs.
> 2. "..getting AVs" is not helpful. Ask them, when they see AV messages, to tell you the name of the module where the AV occurs.
> 3. If you haven't done so already, study the notes and warnings about the MSVC8 runtimes in the Installation and Migration Guide. You don't mention which evolution of v.2.1 is in use...but the most up-to-date and complete coverage of the MSVC8 issues can be obtained from the v.2.1.2 version of the document, downloadable from the Documentation Index page of the Firebird website.
> 4. Also read and understand the field qualifier changes in the Migration section of the same document. A lot of "lazy" query syntaxes are not valid in 2.1 any more. IBO 4.8.7 addresses this but it won't be effective if your SQL doesn't comply with the stricter v.2.1 rules. (As a rule of thumb, use of SELECT * queries in applications has the smell of "lazy" or "neglected" syntax about it...)
> 5. As for the unreferenced column issue - this will be occurring because of a mismatch on the client side. If it's occurring as a result of a SELECT * query, it is probably from a pre-IBO 4.8.7 field reference for an older version of Firebird, that's hard-coded somewhere, probably in the DFM file.
> It's off-topic here but, if you are using the TDataset-compatible components (as one could suspect from the obscure temporary field name in the error report), a likely place to look is in the TField objects. The usual way to fix that is to delete the field objects and re-add them. If you didn't attend to that during your code upgrade, it *will* keep biting you.
> You should get some more clues by reading through the IBO 4.8.7 release notes, including references not just to changes made for Fb 2.1 but all changes since the older IBO version that was installed in Delphi before you started upgrading your apps.
> ./heLen
> (also wearing the ^heLen^ hat - take Delphi/IBO-related questions to the IBO list)