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