-
More
OOP-Like: VPME applications are more OOP-like with code now
in classes instead of programs
and forms.
-
More
Stable: VPME and VPME applications are now more stable
because they no longer use global memory variables. Certain errors
cause VFP to clear memory, including memory variables. This caused VPM
applications to “hang” because global memory variables were used
to hold various object references.
-
Referencing
the Reference Record: The field validation routine and F2
Picklist form no longer close the lookup table/view that they open
with the “f2reftable” alias. The table/view is now closed when the
form where the FK is edited is closed. What this means is that you can
reference in that form the “f2reftable” record found by the
validation routine or selected on the F2 Picklist form.
-
Primary
Key Generator: VPME has a new PK generator that stores the
last generated number in a new table instead of in the data dictionary
table. Storing the last generated number in the data dictionary caused
problems when updating an application in which the data dictionary
tables needed to be updated.
-
Data
Functionality Moved Out of Forms: Data handling
functionality has been moved out of the form classes and into methods
of the application object. This makes it easy to manipulate data
outside of forms.
-
Improved
RI Performance: The VPM RI routine has been modified to
improve its performance, especially on large tables. This was achieved
by changing the way in which related records are found, including the
use of parameterized views.
-
Find
Records Form: There is a new Find form that works with
view-based forms to let the user select the records that will populate
the view cursor. The label captions that appear on the Find form are
determined by values in a form property if they should differ from
those in the data dictionary.
-
Easier
Access to System Tables: VPME applications now open system
tables (Data Dictionary, Messaging, and
Security) in a private data session and stay open as long as
the application is open. This means that system data can more readily
be accessed and should speed up normal application operations. Methods
have been created to easily retrieve information from these system
tables.
-
Transaction
Rollback: Even though the PostSave method is run after the
Save is performed, it can now cause the Save to be rolled-back. This
is accomplished by wrapping the Save and PostSave functionality in a
single transaction. The same is also true of the Delete/PostDelete
functionality.
-
Separate
Tables: In the RI setup for a FK in the Data Builder, a
separate table or view can now be specified for RI (the parent
table/view), validation, and F2 Picklist.