Fred Blogs' MegaQuit()

« Return to Article
  • Keloran 2010-04-05 09:06
    FrErr(comment + "frist");
  • frits 2010-04-05 09:10
    Doesn't all VBA code look like this?

    HoldIt() does have one mistake. Fred forgot to put a DoEvents in the loop.
  • highphilosopher 2010-04-05 09:22
    So I have to say that you should expect nothing less that high quality WTF's coming out of an Access Database. It's the breeding ground where they usually start.

  • dpm 2010-04-05 09:24
    Well, now I'm finally motivated. I've been meaning to write some kind of function that would, I dunno, maybe "sleep" for a given amount of time or something without sucking up CPU . . . but I'm such a slacker that I've been sitting on my butt instead. Today I will write it! I can already imagine every VB programmer in the world singing my praises.
  • justsomedude 2010-04-05 09:31
    highphilosopher:
    So I have to say that you should expect nothing less that high quality WTF's coming out of an Access Database. It's the breeding ground where they usually start.



    The problem isn't that access is horrible, it's great for what it's designed for - and the same applies to VBA. I've built surdy stuff in it when things had to be both simple and fastly done, stuff that ran fine for many years, met the need, and was liked by the end users.

    It's not the platform itself, that it's *so* accessible, you get a lot of crap built by people that shouldn't be developing in the first place.

  • Ben L. 2010-04-05 09:31
    I'm broken. I Don't know what happened (I wasn't running at the time),
    but I called: my mom and bang! The duff code came back with
    0: Success. Sorry.
  • Fred 2010-04-05 09:35
    Sorry, just couldn't HoldIt longish enough
  • Patrick 2010-04-05 09:39
    You have to at least give credit to Fred for trying out some AI in the error handling. Too bad he basically made an artificial retard...
  • The MAZZTer 2010-04-05 09:44
    Fred forgot to declare Count Static, so count will never be more than 1 (VB will initialize it to 0 every time it enters the function since when it leaves it goes out of scope because it's not Static).
  • anony mouse 2010-04-05 09:45
    As the family unpaid computer support guy, I wish more software had a "Have you tried restarting?" built-in suggestion.
  • Nibh 2010-04-05 09:48
    I don't see the WTF. These are EXCELLENT error messages from a usability standpoint. They'd take me from pissed off to laughing in three seconds flat. Really, what other purpose does an error message serve to an end user?
  • filo 2010-04-05 09:53
    HoldIt is a pseudo random infinite loop generator, nice!
  • BBT 2010-04-05 09:59
    So, for HoldIt...
    If you call it in the 59th second of the minute, it's guaranteed to infinitely loop. If you call it with "longish" >= 59, it is guaranteed to infinitely loop. If you call it with "longish" greater than or equal to 59 minus the current second, it will infinitely loop.

    That's one brillant function.
  • SuperAnalyst 2010-04-05 10:02
    1. The MegaQuit() looks a little messy. I'd personally rewrite before it saw a Production db.

    2. That FrErr() looked fine unil I saw the Count variable. (Where did that come from?)

    3. The Sleep() is something I did myself when I was first learning the basics. I dropped it about 5 seconds after running it for the first time.

    Overall, for a first draft, this code looks acceptable. But to send it out to end users? Did Fred Blogs have something issue with the company? His father-in-law perhaps?
  • Timothy Baldridge 2010-04-05 10:07
    Sorry, I tried to enter the Captcha, but the duff came back with "wrong word".
  • Alargule 2010-04-05 10:09
    Gregory.
  • Ramses So let it be written so let it be done 2010-04-05 10:19
    I think all error msgs so say:

    "The application crashed and it's your fault."

    "Reboot your PC."

    There would then also be an animated GIF of Bart Simpson benind over and mooning the user.
  • Ramses So let it be written so let it be done 2010-04-05 10:20
    Ramses So let it be written so let it be done:
    I think all error msgs should say:

    "The application crashed and it's your fault."

    "Reboot your PC."

    There would then also be an animated GIF of Bart Simpson bending over and mooning the user.



    Sheesh, I type very goodly...
  • MadX 2010-04-05 10:22
    Someone should try to put that WTF to music. Opera, maybe?
  • Bubba 2010-04-05 10:31
    A bit of .Net would fix that right up.
  • Paula 2010-04-05 10:46
    MsgBox("Brillant")
  • NH 2010-04-05 10:47
    VB (or whatever derivative) and Access is a breeding ground for a whole bunch of WTF:s.

    The least that would happen would have been when an upgrade had occurred rendering the code obsolete.
  • Bob 2010-04-05 11:21
    I bet it took you 3 months to come up with that answer.
  • justsomedude 2010-04-05 11:21
    Paula:
    PaulaBlog = MsgBox("Brillant",vbYesNo + vbInformation,"Witty")


    FTFY
  • Bob 2010-04-05 11:22
    Paula:
    MsgBox("Brillant")

    Helps if I quote it.
  • @Deprecated 2010-04-05 11:24
    If only my father in law ran a business that I could bilk for piles of money, while getting a monkey to write the code... Then I could sit back and read slashdot all day!
  • DuffMan 2010-04-05 11:31
    Ramses So let it be written so let it be done:
    There would then also be an animated GIF of Bart Simpson benind over and mooning the user.

    With an error message like "The duff code came back with...", I was thinking more Duff Man than bart...

    "Duffman is thrusting in the direction of the error! Oh Yeah!"
  • somedude 2010-04-05 12:22
    this.message = Paula
  • Wyrd 2010-04-05 12:24
    Ok.

    I get that FrErr() is wonky looking, and it falsely assumes it can rely on Count to hold its previous value the next time its called. Additionally, I'm not sure why a calling count of five was chosen as the magic number that make it switch to the Else clause.

    Also, other people pointed out that HoldIt() acts as a "semi-random infinite loop generator", and even if it were coded properly, it probably shouldn't exist.

    But what precisely is wrong with MegaQuit() beyond its goofiness? There's probably something glaringly horribly wrong with it, but I'm not sure what? Where's the wtf? Please assist. See, one day, I might *be* the FredBlogs guy and I'd really rather not be, so I need to understand his folly. TIA

    --
    Furry cows moo and decompress.
  • Anon 2010-04-05 12:29
    I think it's brilliant that pause pauses not just Fred's database, but also the entire PC by pinning the CPU.

    If only he had foreseen multi-core PCs and figured out a way to pin all of the processors. Oh well, a craplet developer can dream....
  • Ross 2010-04-05 12:36
    MegaQuit isn't so bad. Here's two things I can find wrong, but they're not really WTFs.

    First, MegaQuit does two things when it should only do one. One is that it closes all forms; the other is that it asks whether it should quit access, and does so if confirmed. These should be two separate functions.

    The second thing is related. If you're going to quit, why bother closing forms first? And if you do need to close forms before quitting, shouldn't you get confirmation before you start closing them?
  • Christopher 2010-04-05 12:37
    I'm not at all familiar with VBA... can someone elaborate on what the code does?
  • csm 2010-04-05 12:41
    this actually made me laugh out loud. high-larious.
  • csm 2010-04-05 12:41
    DuffMan:
    Ramses So let it be written so let it be done:
    There would then also be an animated GIF of Bart Simpson benind over and mooning the user.

    With an error message like "The duff code came back with...", I was thinking more Duff Man than bart...

    "Duffman is thrusting in the direction of the error! Oh Yeah!"


    ugh...forgot to quote. THIS made me laugh out loud...
  • London Contractor 2010-04-05 12:47
    Ross:
    MegaQuit isn't so bad. Here's two things I can find wrong, but they're not really WTFs.

    First, MegaQuit does two things when it should only do one. One is that it closes all forms; the other is that it asks whether it should quit access, and does so if confirmed. These should be two separate functions.

    The second thing is related. If you're going to quit, why bother closing forms first? And if you do need to close forms before quitting, shouldn't you get confirmation before you start closing them?


    I think in Access you need to manually close all the forms before you can quit - also they could be bound to the database, so you'd need to save any changes as well.

    All the code sucks. Awful.
  • Anon 2010-04-05 12:49
    Anybody writing code like this should be introduced to the MegaFire() function.
  • frits 2010-04-05 12:55
    Anon:
    Anybody writing code like this should be introduced to the MegaFire() function.


    Nah, he's the VP’s son-in-law. He'll probably use this assignment as a stepping stone to the MegaManager object.
  • YourNameHere 2010-04-05 12:55
    Ross:
    MegaQuit isn't so bad. Here's two things I can find wrong, but they're not really WTFs.

    First, MegaQuit does two things when it should only do one. One is that it closes all forms; the other is that it asks whether it should quit access, and does so if confirmed. These should be two separate functions.

    The second thing is related. If you're going to quit, why bother closing forms first? And if you do need to close forms before quitting, shouldn't you get confirmation before you start closing them?

    It's been a long time (thankfully) since I've done VBA in Access but wouldn't this:

    DoCmd.OpenForm "Start_up"

    cause the app to reinitialized running all the Form_Load events rather than just not exiting?
  • Hatterson 2010-04-05 13:16
    Actually the HoldIt function seems to do exactly what it implies, both by name and comment aside from the obvious error or infinitely looping whenever it's called with longish > 59-current second

    It pauses the application (or freezes it, whichever you prefer). I would also describe it as a Hold as it effectively prevents anything else from happening until it's done.

    It's certainly not a sleep function, but who would want a sleep function that has a duration with a granularity of a second anyway?

    Clearly this is one of the best ways to make sure nothing else happens in your program until you've made frozen everything up for a while.
  • Sponjk 2010-04-05 13:24
    How, roughly, do you tell "Good" VB from "Bad" VB?
  • ParkinT 2010-04-05 13:27
    If NOT HoldIt() Then PantsWet(true)
  • Rob 2010-04-05 13:45
    Fred must be quite confused. He can't even give himself a type.
  • Mcoder 2010-04-05 13:48
    Sponjk:
    How, roughly, do you tell "Good" VB from "Bad" VB?


    Well, I guess if it is VB, then it is "Bad" VB. But I may be biased from a sample size of little less than a hundred applications, writen by nearly two hundred people (some that also write on other languages) I've seen on my life. Any sample size is too small to prove an absolute...

    The funny thing is that some of those people that code on more than one language write good code on the other languages.
  • VictorSierraGolf 2010-04-05 13:56
    Sponjk:
    How, roughly, do you tell "Good" VB from "Bad" VB?


    Uh... WTFs per minute, maybe?
  • S. Palin 2010-04-05 14:01
    Now lets not go insulting all those who are mentally challenged. They are much smarter than that error handling.

    Patrick:
    You have to at least give credit to Fred for trying out some AI in the error handling. Too bad he basically made an artificial retard...
  • rfoxmich 2010-04-05 14:02
    WTF/KLOC is the standard measure. Problem is that number is usually >> 1
  • frits 2010-04-05 14:12
    rfoxmich:
    WTF/KLOC is the standard measure. Problem is that number is usually >> 1


    1 WTF per 1000 lines of code isn't bad at all. That's got me beat.
  • Tim E Kaard 2010-04-05 14:22
    Sponjk:
    How, roughly, do you tell "Good" VB from "Bad" VB?
    Easy. "Bad" VB typically uses a random sample of bytes from the ASCII character set. "Good" VB uses only whitespace.
  • Fred Blogs 2010-04-05 14:32
    Anon:
    I think it's brilliant that pause pauses not just Fred's database, but also the entire PC by pinning the CPU.

    If only he had foreseen multi-core PCs and figured out a way to pin all of the processors. Oh well, a craplet developer can dream....

    I think it is quite unfair of you guys to pick on my code when all you have is a few excerpts, and only one side of the story.

    Let's just say we don't hire the brightest users at my father-in-law's company. He's widely known as a tightwad and won't hire anyone for more than minimum wage. Then he forbids outside food and drink, and puts in his own vending machines with $2.00 sodas and $7.50 sandwiches. So ultimately the only people who will work here are those who can't do any math. Hell, they can barely count. And read? Forgetaboudit.

    Hence my challenge. When an error message occurs they just ignore it. So I was asked to make them more amusing. No effect. They skip right by them. Finally, old skinflint himself told me -- not asked -- to lock up their computer after every error so they can't do anything else until they read the frickin screen already goddammit!
  • Hexadecima 2010-04-05 14:36
    BBT:
    So, for HoldIt...
    If you call it in the 59th second of the minute, it's guaranteed to infinitely loop. If you call it with "longish" >= 59, it is guaranteed to infinitely loop. If you call it with "longish" greater than or equal to 59 minus the current second, it will infinitely loop.

    That's one brillant function.


    ACTUALLY, HoldIt() would only loop for a minute, not infinitely. Seriously you guys. Seriously.
  • justsomedude 2010-04-05 14:59
    London Contractor:
    Ross:
    MegaQuit isn't so bad. Here's two things I can find wrong, but they're not really WTFs.

    First, MegaQuit does two things when it should only do one. One is that it closes all forms; the other is that it asks whether it should quit access, and does so if confirmed. These should be two separate functions.

    The second thing is related. If you're going to quit, why bother closing forms first? And if you do need to close forms before quitting, shouldn't you get confirmation before you start closing them?


    I think in Access you need to manually close all the forms before you can quit - also they could be bound to the database, so you'd need to save any changes as well.

    All the code sucks. Awful.


    That is incorrect. All it takes is "Application.Quit", doesn't matter if forms are open.

  • Hatterson 2010-04-05 15:11
    Hexadecima:
    BBT:
    So, for HoldIt...
    If you call it in the 59th second of the minute, it's guaranteed to infinitely loop. If you call it with "longish" >= 59, it is guaranteed to infinitely loop. If you call it with "longish" greater than or equal to 59 minus the current second, it will infinitely loop.

    That's one brillant function.


    ACTUALLY, HoldIt() would only loop for a minute, not infinitely. Seriously you guys. Seriously.


    Uhh what?

    Second() returns a integer from 0-59 representing the current second.

    startof will be set to 0-59 when the function is called.

    Second(now) in the loop will return 0-59 meaning that if startof + longish >= 59 then temp will never be > longish and it will keep looping

    second(12:00:01) - second(12:01:01) returns 0, not 60
  • HeWhoComesBackToHauntYou 2010-04-05 15:13
    The real reason why it was slow is because they were using Access, they should have used APDB.
  • Sig 2010-04-05 15:17
    Interesting... this appears to be one of the more non-wtf clients in the end.
    Why? Since they called back the guy who they hired first, obviously because of the expertise... and showing more common sense then I've had the chance of seeing.
  • dkf 2010-04-05 15:55
    Fred Blogs:
    Let's just say we don't hire the brightest users at my father-in-law's company. He's widely known as a tightwad and won't hire anyone for more than minimum wage. Then he forbids outside food and drink, and puts in his own vending machines with $2.00 sodas and $7.50 sandwiches. So ultimately the only people who will work here are those who can't do any math. Hell, they can barely count. And read? Forgetaboudit.
    Sounds like you already know enough to be able to run a business better than he can. Ever thought about starting up a competitor, filching all his customers and crushing his firm like a bug? It'd do both you and him a lot of good, and he'd respect you far more afterwards. (OK, he might hate you too, but respect... sure.)
  • Darkstar 2010-04-05 16:54
    If you call it in the 59th second of the minute, it's guaranteed to infinitely loop. If you call it with "longish" >= 59, it is guaranteed to infinitely loop. If you call it with "longish" greater than or equal to 59 minus the current second, it will infinitely loop.

    Well... if you call it with 59, it will just wait until the next leap second, given that Microsoft got their code right. (Yes, 23:59:60 is indeed a valid time expression - go rewrite your regexes, folks.)
  • Anonymous 2010-04-05 17:04
    "pulled-out" should be "pulled out". It's a verb followed by an adverb (like "log in" or "set up" or "frame up"), not a phrase acting as a noun (like "log-in or "setup" or "frame-up").
  • chewbacha 2010-04-05 17:10
    Anonymous:
    "pulled-out" should be "pulled out". It's a verb followed by an adverb (like "log in" or "set up" or "frame up"), not a phrase acting as a noun (like "log-in or "setup" or "frame-up").


    Known well to "Anonymous" since conception.
  • mike 2010-04-05 18:34
    rfoxmich:
    WTF/KLOC is the standard measure. Problem is that number is usually >> 1


    Divided by 2?
  • Chutney 2010-04-05 18:45
    So, do you think Fred was fired, or MegaQuit?
  • Aussie Contractor 2010-04-05 19:13
    highphilosopher:
    .... an Access Database. It's the breeding ground where they usually start.

    Well what can I say, I started out build Access Databases and here I am six months later charging $110/hr to read blogs on the internet, which I am guessing is actually saving the client money by keeping me away from the codebase. Everybody wins.

    Captcha: nibh - Where Billy Madison goes to school.
  • monkeypants 2010-04-05 19:21
    "Dim FredBlogs"
    How prescient.
  • Aaron 2010-04-05 20:08
    Dim FredBlogs

    That part seems accurate.
  • Aaron 2010-04-05 20:12
    monkeypants:
    "Dim FredBlogs"
    How prescient.

    Darn it, monkeypants. ;)
  • Abdiel 2010-04-05 20:16
    What it says:

    Application will close. Continue?

    OK / Cancel


    What it means:

    The application has closed already. If you had any files open, sucks to be you. But hey, if you want, press Cancel here and I will restart the application for you!

    OK / Cancel
  • Fred Blogs 2010-04-05 20:21
    Hey at least I gave them a moment of false hope, instead of those dialogs that say "you're toasted, all your data will be gone as soon as you click OK" and then only offer one choice: OK.
  • me 2010-04-05 21:25
    love how everything's a variant... great use of memory...
  • David W. Fenton 2010-04-05 22:16
    The intention of MegaQuit() is good, to provide a single exit point for the app, and to insure that cleanup code runs.

    It's a horrid implementation, though.

    As to closing forms before exit, it's not necessary, but there are reasons why you would do it because there's a certain bug in Access that when you close a form a certain way, a dirty record may not be saved.

    Properly writing the code to handle that would mean checking if each form is dirty before closing it, and forcing the save before closing, so that if any errors happen in the save, it can be handled appropriately.

    The criticism that the code is disorganized is completely correct though -- very user-hostile to lose the application state and *then* ask if they user wants to exit.

    The other stuff is indefensibly comical.

    I get hired all the time to fix old and broken Access apps. Most of them have absolutely no VBA code (though often hundreds of tangled macros), or only code that was created by the Access wizards. This one looks like it was written by someone who didn't understand the Access model (i.e., build your UI objects with point and click and wizards and then tie them together with some well-written code, only as much code as is essential to get the job done), perhaps a refugee from some other programming environment where you have to code the most basic functionality.

    FWIW, I've seen really bizarre code in all sorts of different languages. I don't think there's anything specific about VBA/Access. Sturgeon's Law and all that...

    --
    David W. Fenton
    David Fenton Associates
    http://dfenton.com/DFA/
  • BentFranklin 2010-04-05 23:51
    Sure, you can post all nice and concise when you are using your real name, but the real test of character is if you can do it while anonymous.

  • japhyr 2010-04-06 01:05
    Patrick:
    You have to at least give credit to Fred for trying out some AI in the error handling. Too bad he basically made an artificial retard...


    I joined just to say how MegaAwesome this comment is.
  • soporific 2010-04-06 01:27
    Damn! I wish i had thought of MegaQuit!

    The database i currently maintain has Mega Search, just not Mega Quit. Damn!
  • Baaaaa! 2010-04-06 03:42
    Well, this makes perfect sense on an embedded platform with no file system. It's strange that nobody pointed it out already.
  • prueg 2010-04-06 05:33
    What, no IT Crowd reference?
  • filo 2010-04-06 06:45
    Hexadecima:
    BBT:
    So, for HoldIt...
    If you call it in the 59th second of the minute, it's guaranteed to infinitely loop. If you call it with "longish" >= 59, it is guaranteed to infinitely loop. If you call it with "longish" greater than or equal to 59 minus the current second, it will infinitely loop.

    That's one brillant function.


    ACTUALLY, HoldIt() would only loop for a minute, not infinitely. Seriously you guys. Seriously.


    It loops infinitum depending on what time you call it. If we pass in 20 seconds and seconds(Now())=50 what is the max value of temp.
  • Curious Error Messager 2010-04-06 07:40
    Most of this is indeed awful - but the curious error message text is quite endearing and might have a point to it.

    I've found that users' descriptions of error messages tend to be a little inaccurate, so I tend to write ones that are stylistically quirky so that they're easy to identify even when I hear a garbled account of them. This guy's users probably see errors even more than mine do, so it might be even more important to him.

    CAPTCHA "odio" - I hate - but I don't, much
  • Anonymous 2010-04-06 07:51
    Sponjk:
    How, roughly, do you tell "Good" VB from "Bad" VB?

    Easy - if you're currently residing in Opposite Land then it's all "good" VB. If you live in the real world with the rest of us it's all "bad" VB. Simple.
  • gdjfkghl 2010-04-06 07:55
    Fred Blogs:

    Hence my challenge. When an error message occurs they just ignore it. So I was asked to make them more amusing. No effect. They skip right by them. Finally, old skinflint himself told me -- not asked -- to lock up their computer after every error so they can't do anything else until they read the frickin screen already goddammit!


    Did you redefine MsgBox sub? Can i see the code?

    P. S.: CAPTCHA is "genitus"
  • Jaime 2010-04-06 08:27
    me:
    love how everything's a variant... great use of memory...

    You don't really think that wasting 22 bytes is the worst part about using variants, do you?
  • JSampson 2010-04-06 10:42
    Ok my google foo is weak today, and I am not much of a DBA, what is a 'dirty' record? (aside from a music label in New Zealand)
  • Anonymous 2010-04-06 12:01
    JSampson:
    Ok my google foo is weak today, and I am not much of a DBA, what is a 'dirty' record? (aside from a music label in New Zealand)

    For real? OK, well, it's just a modified (but unsaved) record. This is a common term that is not specific to DBs. Modified but unsaved.
  • frits 2010-04-06 12:56
    Anonymous:
    JSampson:
    Ok my google foo is weak today, and I am not much of a DBA, what is a 'dirty' record? (aside from a music label in New Zealand)

    For real? OK, well, it's just a modified (but unsaved) record. This is a common term that is not specific to DBs. Modified but unsaved.


    OK, since you're answering questions. What if I replace record with Sanchez?
  • Hexadecima 2010-04-06 17:24
    frits:
    Anonymous:
    JSampson:
    Ok my google foo is weak today, and I am not much of a DBA, what is a 'dirty' record? (aside from a music label in New Zealand)

    For real? OK, well, it's just a modified (but unsaved) record. This is a common term that is not specific to DBs. Modified but unsaved.


    OK, since you're answering questions. What if I replace record with Sanchez?


    Well, then it moves from New Zealand to California and becomes a band instead of a whole label.
  • Mr. Fancy Pants 2010-04-06 19:45
    <UT2004AnnouncerVoice>

    M M M M MegaQuit!

    </UT2004AnnouncerVoice>
  • Andrew Wade 2010-04-07 20:46
    Curious Error Messager:
    I've found that users' descriptions of error messages tend to be a little inaccurate, so I tend to write ones that are stylistically quirky so that they're easy to identify even when I hear a garbled account of them. This guy's users probably see errors even more than mine do, so it might be even more important to him.

    In my Access apps, I've logged unexpected errors in addition to throwing up a dialog - I've found that works well and is worth adding ugly boiler-plate code to each function. (No tracebacks for errors are available - If you want to assemble a call stack for an error, you have to do it yourself. Bleh. And just give up on logging a line number for the error; there's no sane way to do that. But you can often guess what happened from just an error message and function name alone.)
  • David W. Fenton 2010-04-07 23:14
    You can get the line number with Erl if you number the lines of code, like old-style BASIC.
  • Coder 2010-04-08 03:06
    David W. Fenton:
    You can get the line number with Erl if you number the lines of code, like old-style BASIC.


    The crazy thing about that method is that the line numbers STAY THE SAME on each line, even when you add new code.

    So you come back a year later, and line number 75832 still points to the same code it pointed to last year!

    Crazy language.
  • lokey 2010-04-08 07:22
    Bubba:
    A bit of .Net would fix that right up.


    But it needs XML too
  • Easily impressed 2010-04-08 10:27
    You comment guys and gals are aweseome.
    As the manager of a small dev team, I now have this dream where I post my team's s**t code up here and have you guys gently and sardonically take the piss out of them.
    Seriously, when you consider both the appalling level of sophistication, sensitivity and even basic grammar of your average YouTube comment, the comments here are on a godlike level.
    Keep up the good work, you are all clearly wasted in your day jobs as coders.

    Your reward is now to recieve my response to the original post, in the stylee of a YouTube commenter:

    What the FUCK does WTF mean aneeway? YOU are all GAY! FredBloggs is a dickwit that probably sucks gay ass cos he is too fuked to actooally know shit like I do.
    I bet he is blak too and anyway Laydy Gaga has a dik
  • Psyckers 2010-04-08 19:20
    At least the database admitted something was wrong rather than some other Access databases I have come across which tried to dismiss the error messages and go off in its own macro induced tangent, or like the one I had the misfortune to try and fix a couple of years ago where the message boxes and error messages bordered on abuse from the database.

    One particular error message sprang to mind was:
    'You forgot to enable the complier Smeghead, I will not do anything until you go back and turn the f**king thing on you sorry excuse for being Human.'

    Needless to say one of the jobs my team had to fix was the supposed attitude problem the Access database had towards its users.
  • Andrew Wade 2010-04-08 22:19
    David W. Fenton:
    You can get the line number with Erl if you number the lines of code, like old-style BASIC.

    Yeah, I decided numbering every line just for Erl just wasn't worth it.
  • computerquip 2010-04-12 12:53
    MegaComment()
  • LLJ 2011-08-06 23:25
    Can't he go back and enter it now?