Date() fails in runtime with #name? URGENT PLS

MS Access 97 runtime on Office 2000 Win98 platform.

None of the unbound date text boxes will work in the forms where default value for an unbound text box is date(); the text box shows "#name?" (and is never set from code--a simple set up.) I have checked all simple options in help etc.

Works fine on my test machine and unfortunately I don't have access to the remote machines; the problem only occurs with Office 2000 (5 instances but not all installations) not Office 97 (100s of installations and 0 instances) but I haven't figured out what is unique in the situation and cannot replicate it.

I wonder if it is to do with expression service dll registration being messed up during Office 2000 upgrade but cannot find the correct spot in the registry to check. All my registry entries for vba332.dll are the same as the problem machine. I'm also wondering about licensing of a dll being damaged.

Dates throughout the application fail for these installations.

Many thanks (perhaps I will be able to offer more points as I get them)

Who is Participating?
JimMorganConnect With a Mentor Commented:
OK Mac:  You don't have to YELL!!

Guy and I have spent a lot of time with emails back and forth.  This is an edit of the emails from Dec 23 to Dec 27.


Thanks for your quick response Jim. EE looks like a great and practical idea. I think I could've provided you with more info so...
I have checked KB article on installing Acc97 and Acc2000 on same computer--hatten.ttf seems associated with licensing problem/error of Acc97. In the cases above, we have distributed our app using ODE; Office 97 was not installed on the clients' machines. Our app loads fine. They have an OURAPPPATH\Office directory with the Acc97 runtime files,
including msaccess.srg--would this bear any relation? I see it contains registry info, which seems to be registered (as opposed to the using the .srg file like an ini file).

Many clients also receive error 2447(invalid use of '.','!' or '()') when attempting to overwrite the #name? value in textbox, which may simply be a knock on effect. Like you say, one would expect all other vba functions to fail--I have not checked yet as most functionality needs a date to kick off.  Also, the reference is there: most installations from same distribution  function no problems.

I've checked their registries and vba dlls are registered (typelib GUID at least) same version as my machine, referencing the correct client files.
I haven't tried getting the clients to rename the hatten.ttf and reinstalling according to KB article but will do so and keep you posted, although i'm going away for 6 weeks tomorrow, hence the urgency. I don't think renaming msaccess.exe will make any difference because it's isolated under our application path because it's runtime installation but...?!

Hi Guy,
The MSAccess.srg is the dependency file for MSAccess.exe so that the runtime is registered. When you run an app with the /runtime switch, it looks to the registry to see if there is a runtime license. Even if they have a full copy of Access 97, it will still register the runtime license. Of course the app can be loaded directly from Access. I would not test to see if they are using the runtime license or not. We tried that and it turned out to be more problems than it was worth.
Funny, supposedly we have users who have installed our 97 runtime app on machines with 2000 and have not received any complaints.
Remember the ODE makes a image copy of the system that you are running the Setup Wizard from. If it is not up to the latest versions of  everything, you might have problems there. I tried burning CDs on a Win 95 system initially to keep it at the lowest common denominator. This was not the best solution. Now I burn them on the highest Access 97 machine -  Windows 98 Second Edition and all the service releases and packs. You might check for the latest releases. If all of these are up to date, then minor other things like comctlxxx and dao3.5xxx will be the latest also.
You might send me your Setup Wizard template and let me see what it is installing, where and how. Don't send the setup files. They don't do me any good.
 Another problem that you may be having is a ActiveX control located on your main form. For some reason and for some controls, when you work on a subform or control from the main form and quit, Access always asks if you want to save the main form. This is even if no changes were made to the main form itself. If you say yes, the ActiveX control loses focus and is improperly registered on the form. You don't get the error you would think.  You suddenly get weird errors like the #Name or invalid use of's. The only way to fix this is to open the form in design mode. Delete the ActiveX control and reinsert the control. Then save.
It got so bad for us with one control that we needed that we finally eliminated the OCX control and wrote code for the control's DLL file.
If you are running an MDE, you will not see the errors that occur.  We wrote an error logging program which put the error messages with date/time stamps to a text file. We can look at that and get a pretty good idea of what is happening.
The #name error says that one of the queries or tables in your database was not found and there is no valid field that can be found behind the form. Are any of your tables linked? We always force our apps to relink the tables the first time that they are used or if one is not found because the user moved the db's around.
This should not be the problem with Acc2000 installations but my question might be "Are you absolutely positive that the Access 2000 installation is the culprit?" As they are probably newer systems, they may have been setup differently or by a different administrator than the others. Are the systems on a network? If so, are the 2000 systems logged in exactly the same way, etc?

Hello Jim,
Many thanks, I am definitely the wiser. I didn't realise ODE makes an image copy of setup system, which is on a build machine I haven't checked out (I was hired after last version) but I  doubt is up to date (and is probably running NT4.0). So this is an excellent lead. I do not return to work until Feb so I left some instructions to try regarding hatten.ttf. The other a/p may be able to figure this out, especially as we are about to distribute another release--a good time to fix it if ODE image copy is the cause.
It is interesting that you've encountered no problems with runtime 97 and 2000, and you use latest versions.
Our app uses an interesting technique for connecting to data database(s): change the current directory to that of the data db. The data .mdb file is always called the same but stored in different directories to uniquely id it. The main db has one query per table the uses "Select * From [nameof.mdb file].tablename"; hence to open another data db is a simple matter of changing directories as Access appears to have a built in functionality, which I've never seen documented, to query a database in current directory separate from main database. So no linked tables, or cumbersome code to use 106 tables. I am sure the #name? error does not occur due to a standard cause (desing error) as 99% of installations work fine. Also, we have
no ActiveX controls.
So I guess it's unlikely I'll know the answer for 2 months and so I figure I'll just leave the question as is at EE and wait to mark it as answered; I will add solution as a comment to benefit others, if they're willing to pay the price!! I'm not sure about having to pay for answered qs as that seems inefficient, but I will reserve judgement until I know better how EE functions. You must have a vast store of points and relatively few questions to ask. By the way, how do questions get to worth 10% of original value, sometimes on the very day they were asked? I will keep checking out the site and I'll probably come across the answer.
Again, my thanks, I will tell you of any solution we find or take up your offer of sending you the Setup Wizard template,

When a question is answered, the PAQ (Previously Answered Question) is available for anyone to look at for 10% of its original points. Therefore, if someone can find the answer they want by looking at a PAQ, then they say asking points for themselves. I, personally, have tried to do that but I have never found it to be satisfactory. There seldom is enough information in most answers. Most experts just provide enough of a answer to satisfy the question.
I feel differently about that. I assume that there are 100 members looking at questions for every 10 members participating in a question. So I write my answers, most of the time depending on my time, to satisfy the person asking the question and the other 99 members looking on.
Explain a little more about how you use multiple data databases. It appears that either the data is static or at the end of the data, the data is collated somehow. If two people need to make changes to the same table and the tables are in two different directories, how do you ever reconsolidate the tables? I understand the principals of using a table query and all other queries are based on that query. We do that ourselves. Obviously,  you are therefore using a SQL statement query as opposed to a stored query which in itself not as efficient as the stored query. When I get some time, I'll have to do some time studies to find out which is easier. BTW, we don't have a lot of cumbersome code with our tables. I've written a very efficient procedure which re-links the tables initially. We use linking because it is not the directory where the data databases are stored but the name of the data databases. We allow the user to swap between a demo database for training and their regular data. They can do this as often as they like.

I've noted your comment about Autodelete. I'm quite happy to mark the question as answered in the sense that I have plenty to go on and I will not be able to take this any further until Feb. When a question is answered, I presume all comments are preserved to be seen if someone pays the 10%. So I could add the stuff on ODE and thus benefit anyone choosing to look, making sure I didn't mislead that this is a verified solution. How do you feel?

In regards to the multiple data databases. We do use stored queries in the master .mde file and by this I mean they are not dynamically created in code but are visible in Access database window. Perhaps you define the term differently? Although I guess there is performance loss for us in that the query is compiled and run for one set of data (the training db) before distribution but live tables are in general far bigger and recompiling might be more efficient. This is more academic as practically it's not much of a hindrance as far as we know.

I must confess I'm a bit confused by your question. Each data database has a copy of template tables in the master .mde (which are named with a prefix that is removed in the data databases). Each data database is discrete in that no data is ever combined or swopped between them; reports only ever use the data database you are connected to a the time (ie the current directory).


I agree on answering the question to preserve the comments. And comments can continue to be added.

We consider stored queries as queries visible in the database window. As far as optimization at a later date, anytime that an MDE is compacted, the queries are recompiled and reoptimized by Jet.

I guess that I am the confused one. Not knowing your application, I could not understand how many users in one company could use uniquely different data databases and not have repetitive data or different data. I visualized something like an order or sales DB that various people were inputting data into. All my apps have been more company than individual apps. Yours must be more personal in nature.

gew:  Welcome to EE.

This doesn't sound like it is just the date() failing.  Do you get other weird errors - for example string handling, Mid$, Left$, etc.

It sounds like you either are missing a reference or you are having a conflict with Office 2000 and Access 97.  The reference problem is usually the VBA library.

Office 2000 will install over Office 97 unless you tell it other wise.  When this happens, it really screws up running Access 97.  If this is the situation, then you have to uninstall Office 97, rename MSAccess.EXE to something else and rename hatten.ttf to something else.  The reinstall Office 97 to another directory other than the default.  Go back and change the name back for the 2000 MSAcsess.exe


These is the notes I have in my electronic library that I got from Microsoft:

Remove the installation of Access 97, and then re-install it to a folder other than the default folder. To do so, follow these steps.

NOTE: Because there are several versions of Windows, the following steps may be different on your computer. If they are, please consult your product documentation to complete these steps.

Click Start, point to Settings, and then click Control Panel.

In Control Panel, double-click Add/Remove Programs.

Select Microsoft Access 97 or Microsoft Office 97 Professional from the list of products and click Add/Remove.

In the Maintenance Mode dialog box, click Remove All to remove Access 97.

Search you hard disk for a file named hatten.ttf and rename it to hatten.old if found.

Rename MSAccess.exe to MSAccess.old. The MSAccess.exe file should be located in C:\Program Files\Microsoft Office\Office.

Install Access 97 to a new folder, for example, C:\Program Files\Microsoft Office\Access 97.

Installations from the Office 97 Professional Compact Disc Only: Depending on the options that you select during a Custom installation, you may receive the following error during the reinstallation process:
Bdrintl.dll was unable to register itself in the system registry.
If this happens, quit the Setup program and do the following:

WARNING: Using Registry Editor incorrectly can cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that problems resulting from the incorrect use of Registry Editor can be solved. Use Registry Editor at your own risk.

For information about how to edit the registry, view the "Changing Keys and Values" Help topic in Registry Editor (Regedit.exe) or the "Add and Delete Information in the Registry" and "Edit Registry Data" Help topics in Regedt32.exe. Note that you should back up the registry before you edit it. If you are running Windows NT, you should also update your Emergency Repair Disk (ERD).

On the Start menu, click Run.

Type Regedit and click OK.

In the Registry Editor, delete the following key:

HKEY_LOCAL_MACHINE\Software\Microsoft\Shared Tools\MSO97.dll
Close the Registry Editor.

Run the Office 97 Setup program again.

For additional information about the Bdrintl.dll error during setup, please see the following article in the Microsoft Knowledge Base:
Q162295 OFF97: Err Msg: "Bdrintl.dll Was Unable to Register Itself"
Rename MSAccess.old to MSAccess.exe.
BTW, you can get another 125 points by filling in a new member survey.  See Extra Points.
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.


I know that we have been talking about this situation via email and that you are going to be out until February.  However, there is an AutoDelete feature in EE which will delete this question within 30 days so it will be deleted by that time.

What do you want to do about it?


We need to talk.   You are so angry at "Experts" who post half-baked Answers that you don't want to follow your own advice and post an Answer to this Q.

LOCK IT!  If qwe doesn't decide to award you the points, then he can reject the Answer and go from there, but there is no reason not to.

gweAuthor Commented:
Jim, It's a payroll db with one directory (and .mdb) per company. The controlling .mde can only access one company at a time. So this is the uniqueness; it is only intended to be multi-user in that several payroll (ie for different companies) can be done simultaneously. Little data is entered, most is generated by the program as a record.

I'll have to call this q closed for the moment, even though another programmer checked the ODE setup machine and it is completely up to date. Hmmm. The answer to this will be satisfying! Guess I will reopen this in Feb by adding another comment or posting another q, not sure which.
gweAuthor Commented:
Jim, posting this as opposed to emailing you because I'm interested as to whether you'll be notified since this q has been answered.

I think we have an accidental solution but no explanation. The user had never run Access 2000. The first time they did, it did some first time install stuff. Then they opened our ODE runtime app and lo and behold the #name? problem was gone.

The q is ... what did Access 2000 do on first use?

Don't worry about answering as I will post a new q if I can't figure it out or it doesn't prove generally applicable. Thought you might be interested.

Regards Guy
The first time Access 2000 is used, it sets up it's own Workgroup Admistration.  From that point on, until you switch back to Access 97, which I do regularly, the correct workgroup is set.  I don't believe that I realized this at the time and perhaps there should be a way to define this.

I'm not sure why the 97 ODE doesn't find the right workgroup.  As long as it works that is the key.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.