Attach files to database objects

It is now possible to model applications allowing to attach files to database objects. Such applications can be used to upload unstructured content (PDF files, MS Word documents, ZIP archives) and to associate such content with structured data (author, date, topic, etc.) that can help in managing and retrieving it.

Let’s say, for instance, that you are a physician, and that you have modeled a simple database application keeping track of all your patients. Your model will likely contain a “Patient” class with all the attributes required to identify a patient (e.g. first_name, last_name and date_of_birth).

Now you can extend your model by adding to the “Patient” class one or more attributes  of type “File”, e.g. the PDF scan of the result of a genetic test. Just open the model, select the database schema, right-click on the header of the “Patient” class, and select  “New attribute > File” from the contextual menu. Once regenerated, your application will include an upload button in the form to create or edit a patient.

Contextual creation of associated objects

When populating a database, it happens often that while creating an object you need to refer to another object which does not exist yet. For instance, you might want to register a new invoice which has been paid with a check, but you cannot find the “Check” option in the menu containing all the methods of payments.

Until Livebase 2.10, the only way to resolve the problem was to open a new context on the “Payment_method” class (by clicking on the specific command in the application menu), add  the missing “Check” method, go back to the initial context where the invoice form is still open, hit the refresh button and select the new “Check” method you have just created.

With Livebase 2.11 end-users can now take advantage of a button beside each association editor, allowing to create the object to be associated (the new “Check” method of payment, in our example) within a modal dialog box which pops-up in the main context (the invoice form, in our example). Once created in this way, the new object is associated automatically.

The new feature is available only when the class target of the association (i.e. the “Payment_method” class, in our example) does not have any part class (i.e. is not a whole of one or more composition relationships).  In fact, structured classes would be too complex to be managed within a modal dialog box.

Minor improvements

  • Fixed bug in the visualization of real numbers
  • Fixed bug in the wizard morphing the database schema after some specific types of change in the cardinality and/or navigability of associations in the model.