Conversion and Upgrading
What are the important differences between 4D
v1.x/v3.x and 4D v6 or later?
Note: v1.5 is the client/server version of 4D v3. Any references to 4D
v3 here should be taken as referring to v1.5 also.
4D v6 or later adds considerable capabilities in almost every area of 4D,
compared to 4D v3. However, a 4D v3 database should run unchanged under
4D v6/v6.5 with the following exceptions:
- The UserSet on 4D v6 or later is a local set; this was done to optimise
the speed of 4D, but if you perform any boolean operations between the
UserSet and any non- local sets, including any other automatic sets, you
should first copy the UserSet into a non-local set.
- 4D v6 or later does not support linked lists. Instead, it has the much
more versatile hierarchical list. Any code employing linked lists will
need to be rewritten.
- 4D v6 or later does not support plug-ins installed into the structure
file. If you have any such plug-ins, you should remove them to an external
4DX folder.
Note that 4D v6 or later can support the Before-During-After phases of
4D v3, but can also be set (in the database preferences) to use a much more
advanced Form and Object Events model. If this database is to be developed
further, it is almost always advisable to recast the logic of the database
with the new model. In some cases, this can require a significant effort,
but this effort will repay itself in having a database that is much easier
to extend, debug and maintain.
The most important improvements in 4D v6 or later are:
- 4D v6 or later has had numerous performance improvements, particularly
in client/ server performance. In many cases, client/server operations
in 4D v6 or later can be many times faster than before.
- 4D v6 or later does not run on Windows 3.1.
- 4D v6 or later has the most advanced debugger available in any commercial
programming environment.
- 4D v6 or later supports numerous extensions and improvements to the
4D programming language.
- 4D v6 or later has a more fine-grained table/form/object event model.
Table Triggers make enforcing database integrity rules and employing lower
normal forms for speed much easier and safer. Form and Object events make
user interfaces easier to develop and maintain.
- 4D v6 or later supports very easy deployment of a full range of modern
user interface features, including tab controls, hierarchical lists and
drag and drop.
- 4D v6 or later now includes the ability to access the database using
a web browser. This capability makes serving database information to the
web easier than with any other commercial solution available.
- 4Dv6 or later has the ability to launch processes that run only on the
server ("Stored Procedures"). Since these processes do not need
to pass information over the network, and since they don't employ any
processor time on any client, this feature provides an easy means for
the developer to provide a very large speed increase for any operations
not requiring user control. Since the process is launched instantly on
the server as far as the client is concerned, the perceived speed increase
on the client is even larger. Triggers, similarly, run only on the server.
- New form events.
- New splitter object.
- Improved Import/Export
- Fast mode indexing.
- Imroved Form editor.
- Internet commands.
- Enhanced web-serving with support for non contextual mode.
4D Versions Comparsion Chart
Command sets in 4D v6
How should I convert my 4D v1.5/v3 database to
4D v6/v6 Windows?
Technical note 98-15
describes the appropriate steps in detail. If you are converting from 4D
v3 on Macintosh to 4D v6/v6.5 on Windows, you should also consult this technical
note.
Why doesn't my 4D v1.x/v3.x database work in 4D
v6 or later?
Most conversions to 4D v6 or later run smoothly. If you are experiencing
problems, the most common causes and solutions include:
- Your data file may be corrupted in a way that does not show up in 4D
v3 but does in 4D v6.5. See the conversion Technote for a 98-15
step-by-step conversion process that should avoid this problem.
- You may have a plug-in installed into your database structure file -
these need to be removed.
- You may be using linked lists; this feature is not supported in 4D v6
or later. You should convert these to hierarchical lists.
- You may be performing Boolean algebra between the UserSet and a non-local
set. In 4D v6 or later UserSet is a local set. You should copy it to a
different, non- local set and perform the Boolean operations with the
copy. (Sets in 4D
v6)
- Your plug-ins may not be compatible with 4D v6 or later. Whatever version
of 4D you are using, any 4D plug-ins you are using should be replaced
with the 4D v6 or later compatible version. If you are using any third-party
plug-ins, you should check that these are compatible with 4D v6 or later
by contacting the author or supplier of the plug- in.