From what I can gather from the documentation, client databases synchronize with the server:
when the client database is opened
when “synchronize” is selected from the “File” menu
Is that correct?
Does that mean if two people are using a database over time, they won’t see each other’s changes until one of the two conditions, above, occur?
I was hoping there might be a way to automagically update the server and other clients when data is updated by one user.
Preferably without blindly doing a “synchronize” every n minutes.
Yes, those are the only times the entire database is synchronized.
Panorama will also synchronize an individual record when that record is locked. So you will never edit stale data. If you double click on a cell to edit it, Panorama synchronizes before editing begins. So if someone else has edited that record recently, you’ll actually see the data change as you double click it.
This also applies if data is modified by a procedure. Suppose you have this procedure.
Qty = Qty-1
If two different users run this procedure, the result will be that 2 is subtracted from the quantity.
The server always updates immediately after a change is made on any client.
other clients when data is updated
No, no way to do that other than already mentioned. If it was possible, it would be super disruptive to users. When a synchronization is done, it changes the sort order and does a select all. As a user, you wouldn’t want that to happen all of a sudden while you were working.
If you have a procedure that generates a report, you might want to put a synchronize statement at the front to make sure that the report contains the most up-to-date information.
I believe each record is synchronized and locked when any field is clicked open so everybody will see a current copy of an individual record. You could always write a .modifyrecord or a .currentrecord procedure and tell it to synchronize. However, you will get a lot of synchronizing this way.