Question:
We are trying to write a multi-user Delphi 2.0 app (with Paradox 5.0 tables), and are looking for a way to determine if a record is locked by another machine before we attempt to modify it. I have tried to use the DbiIsRecordLocked function, to no avail. It always returns false, even if I have called DbiGetRecord or Table.Edit. The BDE knows it’s locked because a subsequent call to DbiGetRecord or edit on that record raises an exception (Record locked by user: username). Is DbiIsRecordLocked supposed to work across a network (netware or NT), and if so, how is it used correctly?
Answer:
This is one of the “problems” with the Paradox locking scheme. It’s notenough to just be in Edit mode. In order to create a “locked” condition on arecord, you have to physically change it in some way. One way I’ve gottenaround this is to create a dummy field of a single byte that gets changed assoon as a user lands on a record. This puts therecord into a locked state that can then be checked with DBIIsRecordLockedfrom other machines. It’s not the prettiest technique, but it works.
Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.























