[AccessD] A Dot Bang nightmare (WAS Access97 on W2000 crashes)

Shamil Salakhetdinov shamil at users.mns.ru
Fri Jan 13 11:41:42 CST 2006


Congratulations, Andy!

> although even you might be taken aback by a seemingly
> trivial coding error that 'works' itself but causes such collateral damage
> elsewhere.
No, I wouldn't :)
I did fix many issues like that - didn'ty I say there is no miracles in
software programming and that you will sleep well only when you find the
real cause of your trouble?

I have had similar error(s) in the past with legacy code coming from MS
Access 2.0 where dot was allowed.
But in your case I didn't expect your code has MS Access 2.0 roots.

Of course I should have recommend you to check dot vs. bang first of all.
Sorry I didn't do that.

But I did say you to analize your code for your wizard when you wrote that
you get wizard steps automated.
And to take close attention on your using default properties.

> this one was
> frm.fld = rst!fld
This is exactly the case of "default properties + dot vs. bang nightmare".
And I do remember there was a KB article or something like that in the past
on this subject. I did try to find it for you but failed Then I forgot to
recommend to check you first of all dot vs. bang code because of other work.
My fault...

Is that frm.fld a checkbox?

Have a nice weekend and a good night sleep at last!

Shamil

----- Original Message ----- 
From: "Andy Lacey" <andy at minstersystems.co.uk>
To: "Access Developers discussion and problem solving"
<accessd at databaseadvisors.com>
Sent: Friday, January 13, 2006 6:54 PM
Subject: [AccessD] A Dot Bang nightmare (WAS Access97 on W2000 crashes)


> Well at long last I've cracked what was causing my strange crashes under
> W2000. For the sake of the archives, and anyone else who encounters this
> nightmare, I will tell all.
>
> We all know that you can refer to controls on forms as form!ctl  or
> form.ctl. We can argue about the rights and wrongs of the second of those
> but we know you can do it. This is not about that argument. What, though,
if
> you have a field in a form's underlying recordsource but not on the form?
If
> you referenced that you'd think that you must use the ! form wouldn't you,
> as there is no control? I would. But what if you inadvertently use the .
> form? What, in particular, if you pass the form as a parameter to a
function
> and make that mistake inside the function (thereby giving the compiler no
> chance of picking it up as an error)? Well maybe nothing...but then again
> maybe programming havoc.
>
> W98 seems to be extremely tolerant of this mistake. It treats it as if
you'd
> coded ! after all. You will be none the wiser about your slip-up. Moving
the
> same MDB to W2000 or XP was a different story. What happened there was
that
> once the offending line had been executed the system would inevitably
crash,
> at some point, either with a non-specific "Msaccess.exe has generated
errors
> and will be closed by Windows" error, or a GPF or a "Tried to write to
> memory location xyz and you're not flipping allowed to" error. But the
> 'beauty' of this was that it *never* crashed on the line which caused the
> errors, just at seemingly random points thereafter. So standard debugging
> methods were useless. As fast as I put traps in one part of the system it
> would crash somewhere else entirely. So I'd switch my attention to there,
> and it blazes through there without a hitch and a couple of minutes later
> GPFs somewhere else. I was tearing my hair out. In the end, and it's taken
> all week, I took a different approach. I said, if I quit this area of code
> after it's executed 1 line, do I get any crashes? Answer, no. If I allow
it
> to go to the end do I get crashes, answer yes. So, if I quit the code half
> way through, do I get crashes? If yes the code before the half-way point
is
> causing it, if no it's between half-way and the end. You get the picture.
In
> that way I chopped and chopped and, a long, long time later, got down to
the
> function and then the line that made the difference. Not, remember, that
> executing the line crashed, but that executing the line caused the system
to
> crash somewhere else soon. And that's when I saw that whilst the
surrounding
> lines were of the format
>
> frm!fld = rst!fld
>
> this one was
>
> frm.fld = rst!fld
>
> So I changed . to ! and lo and behold no more crashes.
>
> And I can only talk about A97, as I can't test my app on anything else,
and
> I know it's not even a universal problem in A97 as I just tried to create
a
> little MDB to demo the problem, and it fails to crash. So there's no
> consistency in any of this but there is a huge problem there somewhere,
cos
> when it does hit it's a terror. It's perhaps the closest I've come in 30
> years of programming to saying I can't solve this because it defies logic.
> But still, it's solved now, just in time for the week-end so I'll be
having
> a big drink tonight.
>
> Thanks to all who responded to my plea earlier in the week. I was on the
> wrong track with DLL's, although I think I can be forgiven for thinking
> along those lines, and it was Shamil who urged me to focus on code. You
were
> right as ever Shamil, although even you might be taken aback by a
seemingly
> trivial coding error that 'works' itself but causes such collateral damage
> elsewhere.
>
> Have a good week-end all. I know I will.
>
> --
> Andy Lacey
> http://www.minstersystems.co.uk
>
>
> ________________________________________________
> Message sent using UebiMiau 2.7.2
>
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com




More information about the AccessD mailing list