multi-user paradox tables

mannak042397
mannak042397 used Ask the Experts™
on
I'm having biiig problems with a Delphi application using Paradox tables in a multiuser environment.

When user A adds a record, user B doesn't see the record. I'm using queries to show the records. Even if user A executes the query a dozen times, it doesn't show up.

Only when user B exits the program, and starts it again, user B can see the record user A added.

Does anyone know this problem? (and has a solution?)
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®

Commented:
What did you set your BDE config parameters to?
I mean paradox driver tab, and system tab.

Commented:
Anyway, you can't get the record added by another user until you execute your query again. So, in your example, user B won't be able to see the new added record until he (user B) executes the query again.


Author

Commented:
As said, even when user B executes the query again, the new record cannot be seen by user B (untill he shuts down the program and starts it up again.

Paradox BDE config:
Version: 3.0
Type: FILE
Langdriver: Paradox 'intl'
Level: 4
Block size: 2048
Fill factor: 95
Strictintegrty: true

systemtab:
version: 3.0
local share: true
minbufsize: 128
maxbufsize: 2048
Langdriver: Paradox 'intl'
maxfilehandles: 48
sysflags: 0
Low memory usage limit: 32
auto odbc: false
default driver: paradox
sharedmemsize: 2048
sharedmemlocation: --empty--
data repository: sample data dictionairy
sqlqrymode: --empty--

Starting with Angular 5

Learn the essential features and functions of the popular JavaScript framework for building mobile, desktop and web applications.

Commented:
What about the paradox driver net dirs of both clients?

Have you tried changing the tables from within Database Desktop in both clients at the same time? What happens?

Author

Commented:
If I try to change values in tables using Database Desktop, something really strange happens. I ran this experiment on one pc (not attached to a network).

For example, I'm running my application and change a value in DD from 200 to 300 and post the change. Then I open a new window in my application, which has a TableX.Open statement.

DD still shows 300. Then I Edit the table, add a value to this value (TableXFieldY.Value := TableXFieldY.Value + 1;) and post the change.

In DD you can see the value change from 300 back to 201 (which is, of course 200+1)! It seems like BDE is caching tables.
gdj

Commented:
See some tips for multi-use at
http://www.experts-exchange.com/Q.859418576

In my tests you cannot run a 16bit and 32bit delpi program on the same data, they create different .net files.  This caused a problem similar to the one you are having.

Try disabling the cache of Windows 95.

If one of the computers is the computer with the data on the local drive, try accessing that data from 2 remote PCs.  This would indicate some net / local cache Bugs in the OS.

Always use DbiSaveChanges(Table1.Handle);
this uses the dbiprocs unit.
Commented:
I guess the user that made changes to data have to call then for QueryA.Refresh so information is flushed to disk. Did you already tried this?

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial