PanoX Server: Non-destructive update

Is there a way to update a database without overwriting procedures and forms that only exist in the database about to be updated?

In other words, if the local database has a procedure named “NewProcedure” and the remote database, with other updates, does not, I’d like “NewProcedure” to “survive” the update.

Same with forms.

Otherwise, how to “merge” the procedures/forms from the “old” database into the newly updated one?

Thoughts? Thanks in advance.

You talk about a “remote database”. That’s not terminology Panorama uses, but based on the context, I think you are talking about the copy of a shared database that is on the server.

Assuming that’s what you mean, I think what you are really saying is that you’ve modified the procedures of a database independently on two different clients. Panorama’s “new generation” feature is not Git, the system doesn’t provide for merging different branches. However, in the situation you’ve described I think you can manually fix things up.

Let’s say you have two client computers, we’ll call them A and B. You’ve modified various procedures on A, and pushed those changes up to the server. On B, you’ve added a new procedure, but not modified any of the other procedures.

What you’ll need to do at this point is manually push the new procedure on B up to the server. You can do that with the menu command Program>Upload to Server. There’s also a toolbar icon for that, but only if you’ve customized the toolbar to include it.

Now the server has the changes from A and the new procedure from B. So the server copy of the database is up-to-date but neither A or B are. To fix that, use the File>Download Components command on both of these computers to download the procedures. Actually you’ll probably want to do this on all of your client computers. Or, you could just download the procedures on one computer, then re-upload that as a new generation to the server. Then all of the other computers could get the changes by synchronizing.

The exact same technique can also be used with forms.

In general, it’s best to modify code and forms on just one client computer. But if you break that rule, you can manually override to get things back together. However, this would be more difficult if you had modified the code in existing procedures in two places, and really difficult if you had modified the same procedure on two computers.

By the way, the answer to this exact question is no – there is no way to do this. When the local database is updated it will always overwrite all of the procedures and/or forms. The procedures (or forms) are not handled individually, they are processed atomically (in this metaphor, you can’t split out individual electrons, protons or neutrons). You can, however, upload individual procedures and forms, which is why the technique I described above will work to detangle this situation.

Ha! Yeah, exactly. I’ll try to use proper nomenclature in the future.
(I just think of shared databases in a “client/server” manner – even though Panorama X definitely performs its function in its own, unique manner)

Yeah, I know. But, how cool would it be if it could provide that kind of service/feature? :wink:

That’s pretty much what has happened. :slightly_smiling_face:

Cool! I’ll remember this for the future. I already solved my problem by hand-copying the procedures and the blueprint of the form in question from database B and saving them off as text files. Then opened the shared database A, and pasted those in. Works fine. Created the form beautifully.

Yeah, I figured that out … :slightly_smiling_face:

Thanks for your time and explanation, Jim!

I wasn’t trying to criticize you, I’m just pedantic because I want to make sure we are having the same conversation.

That’s certainly another valid solution. :+1: