I’ve created a multi-user application in Delphi that accesses Paradox tables. But I’m having a problem setting them up to run successfully on a network.
A Short Story
Here’s a make-believe but all too common scenario for those of you who are new to Paradox tables:
You’ve just finished final testing of a local database application on your machine, and you’re ready to deploy it to other workstations on your LAN. Knowing that your users will be needing the Borland Database Engine (BDE) to run the application, you install the BDE on each user’s machine, add the appropriate database aliases and create an icon on their desktops that points to your application. Satisfied, you tell the users to go ahead and take the application for a spin and that you’re going out to lunch. You’re confident in the knowledge that you’ve created a virtually flawless masterpiece (it’s got to be a masterpiece, considering the overtime you put into finishing the job). You go out to lunch and order a big steak in congratulations to yourself for a job well done. Today, you think, I’m going to take a really long lunch and revel in my victory. Isn’t life wonderful?
Upon returning to your desk, you notice that the message light on your voice mail machine is blinking furiously. Must be the folks in marketing congratulating me, you think. So you happily dial into voice-mail to listen to your messages. The dry, computerized female voice informs you that the first message came not five minutes after you left for lunch, and it’s from the head of the marketing department. Your heart sinks as you hear the message.
Hi, Tom. This is Mary Malone in marketing. I’m calling to tell you that the application you installed is crashing when more than one person accesses it. This isn’t good because we have to enter the information into the computer by quitting time today so we can run our reports in the morning for submittal to the planning department. I’m thinking that if this one thing’s wrong, what else is? Sorry for being a little miffed about this, but you need to fix it as soon as possible. Can you call me back and tell me when you’re coming over? The rest of messages say essentially the same thing.
When you call Mary back, you find out that the error messages that come up are “Directory is locked by another user." or “Cannot open table. Table is locked by another lock file C:PRIVPARADOX.LCK”. How can that be? you ask yourself. I’ve never seen that error before. What am I gonna do…
Does the above sound familiar to you? While a bit on the hokey side, it’s not as far-fetched as one might at first assume. But there is a solution to this problem.
Networking Paradox tables is not that difficult. In fact, when I tell you how, you’ll flip over how insanely simple it is. Here’s what you have to do:
- Open up Explorer or File Manager and create a new directory that is accessible to all users, making sure that they have both read and write privelges to it. For clarity’s sake, name it PDOXNET.
- Go to a user’s machine that has the BDE installed on it.
- Open up the BDE Configuration Manager. For Delphi 1.0, this is the IDAPI Configuration Manager.
- In the Driver Name list, select the PARADOX list entry.
- In the Parameters fields, click on the field entitled NET DIR.
- Type the fully qualified name of the directory you created on the network into this field.
- Save the configuration and exit the BDE Configuration Manager.
- Repeat steps 2 through 7 for each user’s machine on which the BDE is installed.
You must go through each of these steps, for a very good reason: The BDE has to know how to manage access to shared resources by multiple users. It does this with a central network control file called PDOXUSRS.NET, which is essentially a binary table that contains information about a specific user accessing a table. Its purpose is to keep a user count and tell the BDE who has what resources in use at any time. But the most important thing about this is that there can only be one of these files on the network at any time, and each user that uses the BDE must point to this file. Otherwise, the BDE will not know how to manage the users, and you’ll get the error messages that were mentioned in the story above.