AndrewMozley
Programmer
There is an application which mainly consists of a startup program, several function libraries, a menu system, a set of forms and reports, and a database made up of several tables.
The startup program, forms, function libraries and menus are bound together into an executable (say) myapp.exe. The report layouts are not bound into myapp.exe, but issued as a folder (say) appreports which is available on the path at run-time. The reason for this is that several of the reports can be customised by the user; these modified report layouts are available in a folder locreports which is also available in the path at run time.
Re-issuing the system.
As time goes by errors are discovered in the system and new facilities may be added. The system can be issued to users (in other locations). Myapp.exe and appreports are re-issued.
We also need to ensure that the layout of the user’s tables is up-to-date with this release. Maybe new fields have been added to some of the tables, or the length of some fields may have been changed. At present this is handled by re-issuing the updated .dbc database container and skeletal tables; there is then a selection in the menu : updatedata.scx which compares the layout of the new skeletal tables with the user’s tables, and updates the user’s tables as necessary. This process could perhaps be handled by checking the user’s data files against the database container?
One requirement which I need to cope with is to handle the case where the indexes in any of the .cdx files has changed : A new index may have been added, or an existing key may have changed. In the present case a filter - !Deleted() - has been added to an existing index.
What would be the best way of handling such changes to an application, at the time it is being re-issued to the user? I wonder whether the database container (.dbc, .dct, .dcx) contains information which can be read to help handle the changes to each relevant table in the user’s data folder.
Some sample code would be very helpful.
Thanks. Andrew
The startup program, forms, function libraries and menus are bound together into an executable (say) myapp.exe. The report layouts are not bound into myapp.exe, but issued as a folder (say) appreports which is available on the path at run-time. The reason for this is that several of the reports can be customised by the user; these modified report layouts are available in a folder locreports which is also available in the path at run time.
Re-issuing the system.
As time goes by errors are discovered in the system and new facilities may be added. The system can be issued to users (in other locations). Myapp.exe and appreports are re-issued.
We also need to ensure that the layout of the user’s tables is up-to-date with this release. Maybe new fields have been added to some of the tables, or the length of some fields may have been changed. At present this is handled by re-issuing the updated .dbc database container and skeletal tables; there is then a selection in the menu : updatedata.scx which compares the layout of the new skeletal tables with the user’s tables, and updates the user’s tables as necessary. This process could perhaps be handled by checking the user’s data files against the database container?
One requirement which I need to cope with is to handle the case where the indexes in any of the .cdx files has changed : A new index may have been added, or an existing key may have changed. In the present case a filter - !Deleted() - has been added to an existing index.
What would be the best way of handling such changes to an application, at the time it is being re-issued to the user? I wonder whether the database container (.dbc, .dct, .dcx) contains information which can be read to help handle the changes to each relevant table in the user’s data folder.
Some sample code would be very helpful.
Thanks. Andrew