Linking versus embedding
An OLE object can be linked or embedded in your application. The
method you choose depends on how you want to maintain the data.
Embedding data
The data for an embedded object is stored in your application.
During development, it is stored in your application’s PBL. When you
build your application, it is stored in the EXE or PBD file. This data
is a template or a starting point for the user. Although the user can
edit the data during a session, the changes cannot be saved because the
embedded object is stored as part of your application.
Embedding is suitable for data that will not change (such as the
body of a form letter) or as a starting point for data that will be
changed and stored elsewhere.
To save the data at runtime, you can use the SaveAs and
Open functions to save the user’s data to a file or OLE storage.
Linking data
When you link an object, your application contains a reference to
the data, not the data itself. The application also stores an image of
the data for display purposes. The server application handles the actual
data, which is usually saved in a file. Other applications can maintain
links to the same data. If any application changes the data, the changes
appear in all the documents that have links to it.
Linking is useful for two reasons:
-
More than one application can access the data.
-
The server manages the saving of the data, which is useful
even if your PowerBuilder application is the only one using the
data.
Maintaining link information
The server, not PowerBuilder, maintains the link information.
Information in the OLE object tells PowerBuilder what server to start
and what data file and item within the file to use. From then on, the
server services the data: updating it, saving it back to the data file,
updating information about the item (for example, remembering that you
inserted a row in the middle of the range of linked rows).
Fixing a broken link
Because the server maintains the link, you can move and manipulate
an OLE object within your application without worrying about whether it
is embedded or linked.
If the link is broken because the file has been moved, renamed, or
deleted, the Update setting of the control determines how the problem is
handled. When Update is set to Automatic, PowerBuilder displays a dialog
box that prompts the user to find the file. You can call the
UpdateLinksDialog function in a script to display the same dialog box.
You can establish a link in a script without involving the user by
calling the LinkTo function.
PowerBuilder displays a control with a linked object with the same
shading that is used for an open object.