The latest version of Impact is 3.39 - 11th April 2011
This page gives details of the changes which have been made to Impact with each release. As you will see, there is a mixture of useful new features and bug fixes. All software contains bugs, and we believe in being open about those which have been fixed so that users can judge whether it is worth upgrading.
Please see the main Impact page for details of upgrade charges.
The following releases are listed in reverse order, starting with the latest.
Small bug-fix for version 3.41: Alt-double-click to find was not working.
Longstanding bug in find fixed: after searching a foreign key field, doing a find in the same field in the foreign database failed to move to the record when found.
A January 2012 release of DrawPrint had broken Impact's table printing and preview. This has been corrected.
A new calculation function has been added:
int Modified([text d])The calculation function Safe may now optionally take a
parameter giving a database name, in a similar way to the new
Modified function.
The StrongHelp manual for action scripts and calculation expressions has been improved. If installed inside !Manuals it can now respond to searches invoked by text editors such as Zap and StrongEd. For example, if editing an action script in Zap, Alt-double-click on a command will bring up the help page for that command.
Improvements to ImpEmail:
A new helper application, ImpEmail, is released with this version of Impact. ImpEmail uses the Impulse system to allow emails to be created in the same way as Impression and Ovation Pro reports and documents. At present ImpEmail supports sending messages via Hermes and POPstar.
The merge tool has had a big overhaul:
Please see the relevant sections of the manual for a full explanation of ImpEmail and of the new merge features more generally.
Multi-line text fields now acquire a scrollbar when needed to display more lines of data than will fit. Single-line text fields are now restricted to staying as one line: word wrap may not be set on these, and any values imported will have the new lines converted to spaces.
There have been major changes to support selection, drag-and-drop editing and the global clipboard in text fields. Note that these facilities are limited to database text fields only at present, and are not available in numeric fields, date fields, or more generally in other writable icons elsewhere in the application. To use the new features, which involve some significant changes to existing functions, you will need to enable partial text selection via a new option in Impact's choices window.
When partial text selection is enabled:
With partial text selection disabled in choices, which is the default, the previous behaviour of Impact is mainly retained. Some improvements are available even with partial text selection disabled:
Support for OLE (Object Linking and Embedding) has been introduced for most writable icons which can take long values. A ctrl-double-click on the icon for defining the default value of a field, or a calculation expression, will load that expression into your text editor. After making changes, saving the file will transfer it back into Impact.
When you are editing a card design, dragging fields from other cards no longer allows data to be exported, but instead shows the shape of the field being dragged, ready for positioning as a foreign field or as a copy of a field on the card being designed. This also makes it easier to copy sprite fields, notes, actions and so on.
A serious bug (introduced in version 3.37) has been removed. If a field or object was deleted from a card, the next time the card was redesigned it was possible that text fields might become attached to the wrong icons.
Various performance improvements have been made:
There are several enhancements to the import tool with this release:
For more information see the revised manual, which includes some tutorial examples to help you understand the import process better.
There have been several improvements to handling record updates and tools when the database card is in entry mode.
The suffix and prefix for sequence fields is presented properly when editing the field attributes. A few other bugs relating to card editing have been removed.
A bug in card design, only affecting the RISC OS Ltd fork of RISC OS, has been fixed. Support for the A9 has been improved with a softload of the Shared C Library to work round a bug in the last A9 operating system release.
Various miscellaneous tweaks, small improvements and bug fixes.
A new option has been added to the menu over a table display to export the table as a Draw file. The widths of the columns and any truncation applied to field values will be the same as the display of the table on screen.
It is also possible to use the Export tool direct from the table menu, which makes it easier to export table data resulting from a search or an action script. A new action script command, "Export", has been added, so that files of data can be exported direct from action script. See the manual for details.
We have revamped printing of tables. There is now a preview window which allows far greater control over the setting of margins, scaling, and breaking of pages. The printing and preview relies on DrawPrint version 1.27 or later being installed on your machine.
In card editing it is now possible to change the field type from a browser to a menu field and vice versa. If you have an object, or a group of them selected, their position on the card can be fine-adjusted using the cursor keys (hold shift to move at grid spacing). Dragging labels now shows the text of the label properly during the drag, and the size of the label will be adjusted to fit the text entered.
When you are editing the card, the tools window can now be opened by double-clicking anywhere on the toolbar, not just via the menu option.
Foreign key fields can now have a menu button attached allowing the user a further means of selecting the record to link to in the foreign database. You can set this up by editing the card design. An index and filter can be chosen to control the sorting of the records on the menu and whether all, or a selection, are displayed. Note that if a filter is applied (or an index incorporating a selection or filter) then the menu will only show a subset of the foreign records available. Links to any of the rest can still created via the find tool.
When using a database which contains dependent fields an important change has been made. The dependent fields are now faded out if the key field is not linking to a record. Previously it had been unclear that any data entered in the dependent field in this situation could not have been saved anywhere.
The merge tool now includes a button to open the database's Documents directory. This is particularly useful for copying existing documents or deleting them.
The "Url" action script command now handles much longer URLs, providing the AcornURI module is available on your computer. This makes it possible to compose whole e-mail messages from action scripts. See the manual for some examples of how you can do this.
If a calculation field was defined which had an error in the expression (for example, a faulty field name), and the user opened a table including this field, errors would repeatedly be reported and the only way out was to quit Impact. This is now fixed: the error is reported once and the column is show blank.
Various miscellaneous small and medium-sized improvements and bug fixes.
A new version of LabPrint corrects a small fault with the matching of label names which could affect Impact action scripts which select label styles.
Editing a selection of records (introduced in 3.37) has been improved to add a button which cancels the saving altogether. This and another dialogue box have had their buttons re-ordered so that pressing Escape has the expected effect.
The AskNum function hitherto only returned integer values, and now returns floating point numbers. If integers are required, you can pass the result through the Int or Round function.
Fixed a bug in 3.36 which prevented the creation of new action buttons in the form of menu icons.
Impact and LabPrint windows now cope much better if the screen size is changed.
The label preview window displays at a smaller scale if the label would not fit on screen at 100%.
The Report tool has been discontinued. Its functions have been incorporated into a greatly enhanced Export tool. If the Export tool was not on a database toolbar, but the Report tool was, it is automatically replaced by the Export tool. Please see chapter 18 of the revised manual for full instructions on the use of the improved Export tool. Enhancements include better support for export to Microsoft Excel.
The in-table editing of data has been enhanced, so that if you edit a field in a record which forms part of a selection of records, upon saving with Return or F3 you are given the option of copying the new value to the other selected records. Please see Section 9.11 of the manual.
There has been a general improvement to dialogue boxes which ask the user to make a choice. The button texts are now related better to the question to make it easier to use. Some dialogues have better functionality too: for example the warning box about databases not having been backed up allows you to choose to perform a backup right away.
The Query calculation function has also been enhanced so that it may take a second parameter which contains a comma-separated list of button texts to be used. Please see Section 16.9 of the manual for full information, or use the StrongHelp manual of action commands and functions.
Adjusted the merge tool to cope with longer document names. Text fields are now much less flickery in their display. Various minor bug fixes.
Corrected fault which prevented you from selecting "Move, or save if last" from the return key actions in the Choices window.
Cured bug whereby Impact crashed on receiving data from some applications, e.g., when saving a selection from an e-mail in Messenger.
Hard spaces are now acceptable as separators in action scripts.
The Find box now opens somewhere sensible relative to the field being searched, and closes when the card or database is closed.
The window for editing help text for fields behaves more helpfully when you exceed the limit on the number of characters.
If a backup fails to be completed, the date of the last successful backup is no longer overwritten in the database Info window. If you perform many manual backups in a short space of time, the backup tool ensures that one timed backup is kept and not overwritten.
Improved error reporting for calculations appearing in filters, field defaults, calculation fields, etc.
If the data file ends up the wrong size (for example, if the computer was turned off abruptly) then it is resized next time the database is opened, and the user is warned how many records have been lost, if any. Impact now closes the data files more often to guard against such data loss.
Several other bug fixes and technical changes.
Prior to this version a newly-opened database had no index, filter or field map selected, and the first record in the database was always displayed. It is now possible to choose (either at an application level, or for each database individually) whether Impact remembers the settings in force when the database was last closed. Particular indexes, filters and field maps may be set to be used whenever a database is opened. The user may choose to have the first or last record in the database shown, or the record most recently displayed when the database was last used.
A new tool for copying complete databases has been added to the card menu. The user may choose to copy the database with or without the data and/or documents being included. This will make it much easier to share database designs with other users of Impact.
Clicking on a row in a table used to move the card display to the same record, but would not open the card if it was not open already. This action could conflict with making selections on the table for other purposes. Now to view the record in the card you will need to click Ctrl-Select on the table row, and the card will be opened if necessary.
Many more buttons have been added to Impact's windows linking direct to the relevant section of the manual.
On VirtualRPC for Macintosh there was a problem reported with Impact giving an error during printing via mail merge. This error has been suppressed.
Removed a bug (introduced in version 3.29) which could cause Impact to crash if a database was opened via an action script from another card.
Cured two bugs relating to filter editing. The filter test was forgotten for new filters if the user had not explicitly chosen one, and sometimes the wrong field was shown on the field menu.
Fixed a bug which caused an incorrect database shutdown if a backup failed through there being insufficient capacity on the backup disc.
The default background fill colour for labels is now light grey, rather than the unhelpful previous default of black!
Improvements to LabPrint:
Fixed bug introduced in version 3.31 which meant that the filter tests displayed incorrectly when editing existing filters. A bug affecting operation on VRPC for Macintosh was also removed.
Fixed two bugs in the new direct table editing. Also fixed a long-standing (and unreported) bug which prevented search/replace and import working correctly with foreign dependent fields.
Data can now be edited and saved direct from table displays. Hold Alt and click in the field to begin editing the data.

Fields cannot be edited in the table if they have been defined to be non-writable, or if the table column is made of several separate fields concatenated using a fieldmap. Notes fields cannot currently be edited in the table view.
The table display has been corrected so that descenders do not stray below the grid line when rendered in large font sizes. Selecting an unrecognised font for table display no longer causes a serious error. Blank lines are stripped from the start and end of multi-line text fields and notes before displaying in a table. This avoids starting or trailing commas being substituted.
A new calculation function, UrlEncode, has been added:
This encodes any characters except letters, digits, hyphen and underscore in a form suitable for including in a URL as part of a form submission. Some examples of how to use it can be seen in section 17.16 of the manual, such as an action button to open a street map showing the location of a postcode.
Impact now detects when files linked from file fields are stored on the same disc as the database. If you open the database from another computer, the file links will still work. See Chapter 25 of the manual for more details. The first time you open a database in Impact 3.31 it will undergo conversion to work out which file fields are stored on the same disc as the database. For this to work correctly you should run Impact on the computer which you used to create the file links. (For most people this will probably just mean running Impact as normal.)
A file button will now display in red if the file cannot be found; the filename will no longer be wiped from the record. Clicking on the button will display the name of the file which cannot be found. Impact remembers which discs cannot be found to avoid repetitive error boxes appearing. Clicking on the red file button causes Impact to recheck for the disc.
The file button showing green means the file link has been updated but not yet saved (this was previously shown as red). You are now warned if the filename is too long to store in the space allocated.
File fields may now be used in filters, fieldmaps, search/replace, import, labels, export, reports and tables, in each case showing the full pathname.
Changes to autosave in 3.30 have been corrected to avoid regular hour-glassing when indexes were saved. Indexes are now only saved when the database is closed and are rebuilt on opening the database if Impact detects that it was not closed correctly. Impact can also detect when the database is currently open on another computer, making use on a network safer.
Obscure bug-fix to evaluation of certain calculation functions. This only took effect if a calculation field was among the arguments.
Proper URL dispatching introduced. This avoids blank browser windows opening when activating mailto: links from action scripts.
Table title bars and printouts now show the filter, index and fieldmap, or the search terms if opened from Search/Replace tool. The table title may be changed after opening the table by using the menu.
Several minor corrections to Search/Replace tool, including defaulting to "Equal to" for the test. This also applies to creating new filters.
A bug which prevented the selection of certain fonts in LabPrint has been fixed.
Tables have been overhauled:
Improvements to backup tool:
Corrections to record import:
Corrections to allow loading of Impact Pro fieldmaps, filters and cards.
Toolbars newly added to cards will include the appropriate merge tools if merge documents are present in the database.
Autoscrolling of toolbar enabled when dragging tools in card editing.
Renaming a card to longer than twelve characters would render it unusable on reopening the database. Card names are now limited to twelve characters, and database names are also limited in length, avoiding errors appearing.
Demo mode now protects sprites and FileFormat files from old databases.
A number of unhelpful error messages removed.
Unnamed indexes can no longer appear on the index tool menu.
Fixed a few bugs relating to selection indexes.
Autosave choice has been removed, as it actually only applied to records altered with search/replace or import: all other altered records were committed to disc straight away.
Improvements to LabPrint:
Version 3.27 had a fully updated manual. Version 3.29 builds on this work and the relevant chapters of the HTML manual are now directly accessible from most of the major Impact tools at the click of a mouse. Further sections, explanations and examples have been added as the result of user feedback, helping users to get the most out of this powerful database system.
In addition a new PDF version of the manual has been produced (many thanks to Martin Würthner for assistance with this) containing a document overview tree and clickable cross-references.
Impact and LabPrint adjusted to run correctly on the A9Home computer.
The Search and Replace tool has been overhauled:
Added "Invert selection" option to table menus. Redrawing of tables when a record is updated is now much faster.
Added FieldValue function as a counterpart of FieldText. The function returns the internal form of the field. This is of most use for options, menu and browser fields as it gives access to the number which is stored, rather than the textual form based on the captions.
Assignments to flags, options, browser and menu fields in action scripts may now be done by passing a string containing the caption(s) or item to select. The internal numeric form may also still be used.
Creating a new field as a copy of an old one no longer attempts to copy the data.
Removed SampleData from Impact$Path. Impact no longer crashes if all the paths on Impact$Path are invalid.
Field concatenation of the current fieldmap is observed when exporting data by dragging from the record card.
Reading data from fields in foreign databases is now more reliable.
Changed "Single" to "Current record" on all output tools for clarity.
The Import tool may now use a dependent or calculation field as the field to match for overlay, if one appears first in the fieldmap. You are warned if no fieldmap is in force when the tool is opened.
In LabPrint the label design window has been altered to move the label size settings to the sheet design section. This makes it clearer which dimensions have to be set up for sheets of labels.
Impact is now 26/32-bit neutral and does not require a particular version of the 32-bit Shared C Library to be installed.
Two bugs in version 3.27 fixed: Auto mode for backups sometimes caused databases to fail to open. Impact could crash when calculating the value of a calculation field or the default value of a text field.
Many small improvements have been made to the behaviour of the backup tool.
New databases will have a default backup location of <Impact$BackupDir>. This is defined in !Impact.!Run to be the directory BackupData in the same directory as !Impact itself, but can be changed by the user.
A bug in the field names checking process in the 3.24 upgrade has been removed. This affected a small minority of databases.
Impact can look for databases on several paths, as defined in the Impact$Path variable in !Impact.!Run. There is now the option in Choices to group databases into submenus according to the parent directory rather than having one long database menu from the icon bar. If more than one path is available, you are now given a choice as to where to create new databases.
A third option for the behaviour of the Return key on database cards has been introduced: to move to the next icon until the last is reached, upon which the record will be saved.
Several other older bugs (from version 3.16 or earlier) have been fixed.
Now compatible with VirtualAcorn.
Licence system redesigned.
Label tool corrected so that "Next label to use" setting is acted upon when you click "Print Q" to print the queued labels (bug introduced in 3.23).
Fixed bug in creating a new label design: the new name was not placed correctly in the list of labels and could sometimes not be retrieved.
Font sizes no longer need be whole numbers.
When printing from Impact or LabPrint, the user can choose to have the font size decreased automatically if the text would otherwise be too large for the label.
The sheet and label displays are now automatically adjusted when values are changed in the label design: there is no need to press Return for them to take effect. The sample label text in label designing may be changed by dropping a CSV or text file on the window. The first address in the file will be displayed.
Draw files in a label design may now be removed or exported for editing.
Various changes to comply with the style guide. Other bug fixes.
Added parameters to set the number of copies, first label to use, and whether to shrink the text to the LabPrint command:
Label preview facility added to Impact's Label tool dialogue.
The arrow tools have been changed to point left and right rather than up and down. This makes it easier to tell what they do in relation to the record numbers.
The ‘Copy’ tool action script has been corrected to add missing right parenthesis.
The ‘Filter’ tool no longer discards modified data in the card when a new filter is chosen. The Index tool warns if the current record does not appear in a newly selected index. Deleting the current index, filter or fieldmap now turns the tool off.
The ‘Delete’ tool now behaves correctly when the card is in entry mode.
The Backup tool window has been redesigned.
The ‘Find duplicates’ option on the menu over a table now checks all the fields covered by the index which is in force, not just the first.
A default set of tools is provided when you create a toolbar on a new card.
The card size will be adjusted to accommodate the toolbar.
The field searching facility available from the card menu is now consistently known as ‘Find’, and can now be used for searching file objects. Its shortcut key is now Ctrl-F rather than Ctrl-S.
Merge commands are now transferred to Ovation Pro in DDL format, which avoids a bug in Ovation Pro's DDF conversion.
A minus sign may now follow f or i in the Record, Table and Scan merge commands to turn off a filter (including calculation filter) or index. Such a filter or index might have been inherited from a previous Record command, or from the settings on the card.
Errors in calculation merge commands are now trapped (e.g., division by zero).
In version 3.23 the Ovation Pro/Impression merge system was altered so that the Record merge command could not affect the current record number of the output loop. However, this facility was useful in some circumstances, for example, printing a specialised sheet of labels, as described in the Impact manual. The Record merge command may now change the current record in the context of passing through multiple records for output, but will not affect the filter or index in that context, nor the current record number in any other database. From merge activity initiated by the DocMerge action script command, however, the Record merge command will affect the current record number, index and filter in the action script.
Action buttons, file objects and notes fields will have their buttons enlarged to fit the caption as you type.
The default for a browser or menu object is now shown in textual form.
The caret order of foreign and dependent fields can now be set. Setting range checks for calculations is now disabled, as it was irrelevant.
Hexadecimal numbers may be used in expressions. For example, 0xFF for 255.
The UCase and LCase functions may now take negative start and length parameters, like the Text function. The length parameter, or both parameters, may be omitted, in which case the length defaults to the rest of the string and the start defaults to the start of the string.
Added BaseConvert, RomanNumber, AddSlashes and StripSlashes functions. See the new manual for details.
Unrecognised functions are now trapped with a more helpful error message. Fixed bug whereby some valid expressions failed with complaint about the wrong number of arguments.
Impact now checks for unsuitable functions, assignments and syntax errors in expressions used in replacement text in find tool, calculation filter definitions, definitions of calculation fields and default values for dates, numbers and text fields. Functions judged unsuitable are currently: Query, AskNum, AskDate, AskText, Menu, Card, Safe.
Corrected parsing of operators in expressions so that it is possible to write 5+-4 without a space between the plus and minus.
Altered Valid() function so that the optional parameters behave properly. See manual for details of this function.
Altered Next(), Previous() and Valid() functions so that if the specified database has not yet been opened but does exist, you no longer get a "Database not known" error.
Altered the following action commands, which could optionally have a database specifier before the first parameter. This was not documented, and had no function for these commands. It has been removed because it caused problems if you wanted to specify a field in another database as the start of the expression for the first parameter.
The Display, Record and Save commands now give an error if the record number specified does not exist in the database.
Quick search tool now available for calculation fields.
Corrected interpretation of calculation functions with no arguments. Despite examples in the manual, constructs such as Secs(Today()) did not work.
Scripts documentation fails to state data type conversion priorities in full:
Adding an integer or real to a time will result in another time, with the integer being interpreted in centiseconds.
Date action script function now takes an optional second parameter specifying the format the date is to be expected in. Previously day/month/year was assumed. For example, to convert an ISO format date (yyyymmdd) you could use:
Impact will accept months in numbers or words wherever %mn, %mo or %m3 is given.
Similarly, AskDate may have a format given as an optional third parameter. Note that the scripts manual does not make it clear that the second parameter (the default reply) to AskText, AskNum and AskDate is optional.
Sometime between versions 3.12 and 3.16 a new script function, Days, was introduced, but not documented. Its name has now been changed to DaysInMonth.
Returns the number of days in the month containing the date d.
For example, DaysInMonth( Date("20/2/2000") ) will return 29.
The function did not work for users in time zones west of Greenwich, but this has been corrected.
Added functions for adding and subtracting years and months to a date:
date AddMonths(date d, int m)d. The integer m may be negative.date AddYears(date d, int y)y years from d. The integer y may be negative.In each case, if the resulting month does not have enough days in it for the day to remain the same, the last day of the month will be used.
Corrected behaviour of TextMonth and TextDay which were wrong for time zones west of Greenwich. For all time zones TextDay(1) now returns Sunday instead of Monday, conforming with operating system behaviour (e.g. %wn in date formats).
The Text function has been enhanced so that length parameter is optional and either or both start and length can be negative to count from the end of the string. For the following examples, suppose TextField is “abcdefghij”
Text(TextField,4,3) - returns “def”Text(TextField,4) - returns “defghij”Text(TextField,-4,3) - returns “ghi”Text(TextField,4,-2) - returns “defgh”Text(TextField,-4,-2) - returns “gh”New string handling calculation functions introduced as follows:
text Insert( text t, text into, int start[, int length] )t” into the text “into” at the character position given by “start”. The start parameter may be negative to count back from the end of the “into” string. If length is positive, that many characters are omitted from “into”. If negative, counts back from end of string “into”.Insert( "123", "abcdefghij", 5 ) - returns “abcd123efghij”Insert( "123", "abcdefghij", 5, 2 ) - returns “abcd123ghij”Insert( "123", "abcdefghij", 5, -2 ) - returns “abcd123ij”text Trim( text t[, text chars] )text LTrim( text t[, text chars] )text RTrim( text t[, text chars] )t and remove any characters found in text chars from the ends of the string. Trim removes from both ends, LTrim only from the start of the string and RTrim only from the end. If the text chars is not given, the functions remove white-space characters (space, tab, new-line, carriage return, form feed).Trim( " abc def " ) - returns “abc def”LTrim( " abc def ", " abf" ) - returns “c def ”A new function has been added to allow you to test whether a field or result is “null”. Null is a value meaning the datum is essentially unknown (a text field which has been set to an empty string or a number field set to zero are not considered null). Null values currently can only appear in date fields (see below).
int IsNull( expression )IsNull( Date("") ) - returns 1IsNull( Date("") + 10 ) - returns 1IsNull( "" ) - returns 0The action script interpreter now allows braces to appear on same line as the condition, or single command blocks to appear on the line following the condition. Also many commands can be placed on one line (except in the case of star commands). All commands are terminated by the end of a line, if a semicolon is not previously found.
Star commands in action scripts must be the last command on the line, and will be terminated by a semicolon that is not within quotes or the end of the line. Multiple expressions enclosed in parentheses may be evaluated in the star command. For example, suppose the Phone field equalled 345181. The following star command in an action script
*echo (Phone, "x", 45*2) is the ("correct"+" number;");would be interpreted as:
*echo 345181x90 is the correct number;Note that multiple comma-separated expressions are allowed within the parentheses, and these contribute text to the star command. The only spaces in the resulting star command are those explicitly resulting from plain text or expressions.
A couple of bugs removed that affected comments and escaped characters in action scripts.
The characters !, | and # may all be used to indicate the start of a comment, whether at the start or part-way through a line, except in the case of star commands in which case only ! may be used. Formerly | and # had only functioned at the start of a line.
An optional third parameter to the TempFields command has been added, to allow the setting of the concatenation string for the fieldmap.
Zero divisors in modulo operator (%) checked for and faulted.
Removed error for Tool command, which could cause unnecessary concern when using the F4 key if the search tool was not on the toolbar.
Other action script bugs fixed:
If’ and ‘While’.It was previously possible when editing a card design to shift-drag in a field from another card of the same database and thereby create a foreign reference to the same database. This process is now made easier by allowing dragging within the same card to create foreign versions of the same field. The keys to be held down for the different drag effects have been altered and made more consistent as shown in the table:
| Same card | Same database | Another database | |
|---|---|---|---|
| Drag | Move | Copy | Copy as foreign |
| Shift-drag | Copy as new | Copy as new | Copy as new |
| Ctrl-drag | Copy as foreign | Copy as foreign | Copy as foreign |
“Copy as new” used only to be available from menu, and not from other cards. It creates a completely new field based on the characteristics of the old one. The name of the new field will be blank. Action scripts will not be copied as the field does not yet have a name.
“Copy” allows a field to appear on more than one card of the same database. Both copies will be updated in tandem.
With all of these drag methods it is now possible to copy a selection of fields all at once.
Dragging data to a card whose design is being edited no longer modifies the record that was on display beforehand.
Checking of object names is now performed when editing the object, rather than waiting until the card is saved. If the name of an object is cleared because of a conflict, the object is selected in the editing window to make it clearer. A new object will lose its name in preference to an existing object.
Radio option objects did not always function correctly if copied from one card to another.
A new method has been implemented for selecting defaults for flag objects. It used only be possible to select one flag value to be on by default, as for radio buttons. Now you may choose which flags are to be ticked by default by selecting them on the card being edited, and then clicking the “Set defaults” button on the flag editing window. The “Show defaults” button will redisplay the current defaults.
Deleting a card used to identify the card to be deleted by the name of the card in the editing palette, rather than taking the card you were actually editing. This button is now greyed out when creating a new card.
In card editing, the warnings Impact gave about deleting the last instance of a field were not always accurate: sometimes it warned unnecessarily, and sometimes didn’t warn when it should have. For example, it never warned about Notes fields.
Removed bug in card editing: if you deleted a field which appeared with other fields after it in an index, on saving the card Impact would hang and the database would not be properly updated.
If you deleted a field which was used in a simple filter, and that filter was used in an index, Impact used to generate an error when saving the card and then make a complete mess of the database definition. Now OK.
If you deleted a field which indirectly was used in a compound filter, the database got corrupted. - Fixed.
Bug removed which arose if you had two copies of a field on one card which did not appear on another card, and deleted them both at once.
If a field is deleted or changed in length, any affected indexes will now be adjusted and resorted. Tables using indices will refresh correctly (the index used to be ignored when refreshing).
Quick search tool now available for notes fields. Notes may only be searched when they are plain text files, and the tool must be opened from the menu, rather than Ctrl-S or double-clicking.
Added buttons to allow editing and deletion of notes templates during card editing. Templates for notes can now be imported by dragging direct from other applications, not just from disc.
Notes fields can now be set by dragging a file to the Notes button on the card, not just by clicking to edit.
The system used to create an empty text file as a template for notes if none was provided. This has been stopped: a new notes file will still be created as an empty text file if there is no template, but in the absence of a template the user no longer receives a warning about a dragged-in file not matching the template, and this may be useful. The old behaviour can be replicated by explicitly creating a template consisting of an empty text file.
If a notes file does not exist, the clear option will no longer be available.
If a notes field is deleted from a card, the notes files will now be removed.
A notes button on the card being edited could previously change its appearance if you edited data on another card of the same database - Fixed.
Impact will now object to out of range values for hours, minutes and seconds in time values (a bug meant this wasn’t happening).
Corrected parsing of times with am/pm. No longer parses 227 as 2207 (for example) in years of a date. Text in dates (month names, am/pm etc.) now matched according to current Territory rather than in English. Text was already displayed in the language of the current Territory, but previously could only be entered in English.
Filtering and searching on time fields used not to work.
Dates and times used to be stored incorrectly for time zones west of Greenwich, and users in the Azores, Cape Verde Islands and Jan Mayen would have found dates altering wildly if they changed to daylight saving time and back.
Impact used to allow date fields to be left blank, but in fact the date was stored as 1st January 1900, and this could be determined by action script functions such as Month and Year. If you entered 1/1/1900 in a date field, upon saving it would be redisplayed as blank. A distinct null value has now been introduced for dates and times, which will show blank in cards and when exported.
In action scripts the null value behaves essentially as an unknown value. Testing whether it is smaller, larger or equal to anything else (including another null value) will always yield FALSE. Adding days or months to a null date will yield a null date. When converted to a number, a null date yields the value 0 (as does 1st January 1900).
In a simple filter, however, you can test for a date being null by simply leaving the Data box blank. Null dates will not be retrieved if your filter tests for a date being greater than or less than another.
Dates and times in existing databases will be converted as accurately as possible. Users may find some adjustment of filters is required to regain previous behaviour, or they may find filters work better than they used to!
Sprites can now be imported by dragging direct from other applications, not just from disc.
Stopped the unhelpful behaviour that occurred when dragging data from a sprite field to another type of field, or vice versa.
Removed a couple of bugs relating to dragging sprite fields, and a nasty bug relating to error handling and sprites.
RISC OS 5 users will find that Delete, Home and End now work as expected in text fields, consistent with the behaviour in number fields.
Clicking on a foreign field used to bring that record up in the foreign database, if the foreign card was open. Unfortunately, double-clicking to perform a search on a foreign field had the effect of doing a single click first, which could mean that if you were in the middle of modifying data on the foreign card, you would lose it. To avoid this problem, the interface has been changed so that Ctrl-click causes the foreign record to be brought up, and will have the additional effect of opening the preferred card for the foreign database, or bringing it to the top if it is already open.
Range checking used not to be performed when saving foreign dependent fields.
Added warning to Labels tool to alert user when no field map has been chosen.
Error corrected which prevented label queues being saved direct to another application.
Export tool can now export field names in the first line.
If using the overlay option for import, and the first field in an imported record was blank, it overwrote the first record in the database rather than searching for one with a blank field. - Fixed.
When updating a record such that it no longer passes the filter test used in an index, it will now be removed from the index.
If a filter which is used either directly or indirectly in an index is redefined, the index will be recalculated.
Deleting a selection of records by means of a table is now much more efficient, and other tables open on the database are correctly updated.
Tables will be refreshed if the index is redefined, or if a filter applied to the index is redefined, or if the table filter is redefined (unless it was set up as a temporary filter).
Temporary field maps are now stored with the table. Tables will update when field maps change.
In the search window the up and down arrows can be used as an alternative to the nudge buttons to call up previous search terms.
For data being saved from Impact, the Drag-and-Drop protocol is now supported, allowing compliant applications, such as EasiWriter, to autoscroll their windows, etc.
Correction to allow saving files with long leaf names.
Dragging operations can now be cancelled by pressing the Escape key. The Shift and Ctrl keys, if they modify the drag, are now tested at the start of the drag rather than at the end.
Various technical improvements.
Fixed bug with quick search tool (exacerbated in 3.24) where when the menu was opened the search tool switched to that object right away, instead of waiting until the window was opened off the menu.
Alterations to installer for use with Virtual Acorn.
A command dragged from the merge dialogue box can now be dragged right to the edge of the screen.
If you had more than one card for a database, Impact allowed you to createseparate fields on separate cards having the same name. This is now checked for and faulted. If you have databases already in this situation, the first field found with duplicated name will retain it, as it would have been the field used in filters, fieldmaps, etc. Other fields with the same name will have their names removed, and you can give them new names by editing the card.
If you had copies of a field on two cards of the same database, and edited one, it was unclear which version would be saved. To solve this problem Impact has been altered to keep displayed copies of fields in step across all cards of a database. The Clear action script command, when used on a card rather than a database, will clear all objects found on the card and any copies of those objects on other cards of the same database.
Added an "Open card" submenu to card menu to make it easier to open extra cards. Corrected the fault where if you had a card open in entry mode and then opened a further card on the same database, the first card left entry mode.
The Copy action script command, and hence the copy tool, now copies sprite objects and notes fields correctly.
Several problems with dragging data fixed. It used to be possible to shift-drag data from a non-writable field and thereby clear it or to alter non-writable fields by dragging data to them. Fields created inside a previously existing group box could not receive data by dragging in from outside Impact.
Calculation filters in merge commands and expressions in the Calc merge command can now include spaces within double-quoted strings, for example:
will produce a table of all films with a space in the title.
Double-quotes, backslashes, newlines etc. can be included by specifying as \", \\, \n, etc. as for action script literal string expressions. A table showing films with " in the title:
Note that spaces may not appear anywhere else in the expression, so
Handling mouse clicks has been improved, so you are less likely to get the quick search tool popping up when you don’t want it, for example, when clicking on nudge buttons of a browser field.
The "Clear item" menu option did not work correctly for sprites, foreign links and file objects if you had changed the data on the card but not yet saved the record. This has been fixed, and the menu option is now greyed out when the item is already clear. Also, you can now clear a foreign link to a data field which happens to be blank: previously it was treated the same as a cleared link.
Various bugs with foreign fields fixed. Complex structures with foreign fields being links to fields in another database which are themselves foreign now work correctly, as do self-referential foreign fields which link to the same database, and databases which link to each other in a ring. Setting the writable state for dependent fields of type sequence, browser or menu now works, and the option has been removed for foreign calculation fields, as they can never be writable. Any invalid foreign objects which might have been created by earlier versions of Impact are now discarded when reading in the card. When you close a database, Impact closes any related databases if they have no cards open or modified. Unfortunately it was treating cards that were in the process of being redesigned as being closed! If you change a key field, clicking on it before the record is saved now displays the correct record in the foreign card.
Four small improvements made and four minor bugs fixed in the card editing. Several small improvements made to the "Clear item" box and file objects.
Improvements to merge tool. Commands over 63 characters long now export correctly when dragged from the command icon. Errors are now raised when merging if an index or field name in a merge command is not recognised (unrecognised field maps were already checked). If you try to open a document from the menu and none are stored in the database, the error message is more helpful than before.
The values shown in browser and menu fields did not always display correctly when the database was reopened. Fixed.
There were a few circumstances in which Impact did not warn you that modified data was about to be lost, and some in which it did when it wasn’t. For example, moving to a different record by selecting from a table or clicking on a foreign key field did not warn you, but the find tool did warn you even if it was merely about to report that it could not find any matching data. Other examples included closing a single database, closing and reopening a card, and changing sequence fields by dragging in a new value.
Nudge buttons for adjusting numerical values now move faster if you are holding the shift key. Other general improvements made.
Added Selection option for Report and Merge tools to bring them into line with Label and Export, and “from start” and “from here” for the Merge tool. This makes the four data output methods more consistent. They now also cope properly when outputting multiple records if no record passes the current filter. Previously outputting “from here” always output the current record even if that did not pass the filter. This has been corrected.
Added a Previous button to the quick search tool. Corrected a bug which meant that Next did not work correctly for foreign data. When searching a foreign database, the quick search tool no longer inserts data into the local field straight away. Instead the result is displayed to the user who may then choose to insert it into the local card using a newly provided button. You can also now search foreign dependent fields from the card menu: double-clicking dependent fields to open the search tool had been added in 3.22.
Improved Up and Down tool scripts so that clicking repeatedly or holding down the mouse button cycles through the records more accurately.
Further corrections to caret placement in non-text fields.
The mouse pointer no longer changes to a caret shape over fields which are not writable.
Many small alterations to card editing: menus restructured, help text editing converted to persistent dialogues, better display of font setting, border types and colours when editing various objects. The dialogue box for moving objects now closes when you finish editing. Fixed a bug which allowed you to open more than one colour picker for the same purpose at once. Fixed bug which affected resizing foreign key fields.
Alterations made to cope with the Select 3 text selection and clipboard features. Text selection is disabled on record cards as it is incompatible with Impact’s editing operations. It may be possible to introduce some selection features in the future.
Many bug fixes in Merge output tool fixed. The Record merge command prevented multiple record merging from working correctly. Similarly documents containing a mixture of Table and Fetch commands previously did not work. Filters or indexes used in the table could affect subsequent fetches. The Table merge command was unable to insert a table from any database other than the current one, even if specified in the command.
In certain circumstances the Report, Label and Merge tools could change the current record number for the current, or a related, database. As the card display was not updated this was not immediately obvious. Bug fixed, except in the case of merge commands initiated outside Impact.
Several improvements have been made to the display of tables, described below in full so that users can appreciate the reasons for the changes to the user interface:
Altered card editing so that the move tool window and the window of toolbar icons are persistent dialogue boxes, rather than closing when the menu closes. Fixed fault whereby the toolbars of cards other than the one currently being redesigned could be affected by dragging new tools to them. If a card has only had the toolbar edited, Impact now raises a query if you try to discard the design with Cancel.
Corrected behaviour of foreign dependent fields, which could not previously be selected with the selection tool, or repositioned by dragging when editing the card. Nor did double-clicking such a field bring up the search dialogue box. The CField function also now works correctly with foreign dependent fields. This bug affected Ctrl-D for inserting the date, which if used in a foreign field caused an error.
Fixed problems with Import tool, which did not work if the first field to be imported was a Notes field. Nor did it work correctly if any of the fields other than the first was a foreign key field. Moreover if the first field was a foreign key then the overlay option did not function. The card display is now updated, should the displayed record be altered by the import process.
Cancelling an AskNum or AskText aborts the script as intended, but no longer gives a strange action script error.
In text fields on the record card, the caret would stop working if "borrowed" by another window and then returned. This has been fixed. Pressing Ctrl-F12 etc. when the caret is in an Impact window now has the expected effect. Altered behaviour so that the caret moves to the first input field when changing to entry mode, but only if the caret is already in that card.
Dragging data from one field to another with Shift held down (move data) or the left Ctrl key held down (append data to text field) had ceased to work in 3.21. It now works again, and appending will occur if either Ctrl key is held down. In all previous versions this feature failed to work if dragging to a foreign dependent text field, but this has now been fixed. Also Impact failed to save appended data to disc unless the field had been altered in another way as well.
Other minor bug fixes to data transfer routines.
Control characters are now stripped from files dragged in to text fields on the card. Previously lots of errors would result if Impact attempted to display data containing control characters that the Font manager does not know what to do with.
Impact windows now behave correctly when iconised: the icon on the Pinboard is now removed if the window is closed or opened at the application’s request.
Corrected caret placement when clicking in text icons on card.
Fixed obscure bug which sometimes caused Impact to crash when the printer driver was loaded or changed.
Improved data transfer handling to remove errors when dragging from one field in Impact to another. This bug was introduced in 3.19, but it was surprising it had ever worked properly before anyway, as the underlying code was flawed.
Some Style Guide compliance issues addressed:
The Find tool has been altered to make it clear that choosing table output precludes use of replace.
DataSave protocol now handled correctly, allowing (for example) selections from Messenger to be dragged onto record cards.
Formerly an open table display would move to the front of the window stack whenever a record was altered and saved. They now stay in position.
Passwords set on a card were not being checked: checking now implemented. The Ctrl-S action script only worked when the mouse pointer was also over the field to be searched. This has been fixed. File button objects on cards now behave correctly: formerly if a file had not been specified for a particular record, clicking on the File object would open a file referenced from another record.
Interactive help has been added to the Videos sample database. Studying the action scripts of this database will give you lots of ideas for using Impact’s more powerful features.
Alterations made to improve handling of Choices. Impact had been writing its choices to Choices$Dir and reading from there as well, instead of reading from Choices: and writing to Choices$Write. This is now corrected. LabPrint now stores its label definitions in the Choices structure, so Impact does not need its own copy. A few bits of debugging code removed.
It is no longer necessary to set Impact$Globals, Impact$Choices, etc. in the !Run file. Some new variables have been introduced. See the comments in the !Run file for details, especially if you have Impact installed on a network.
Initial 32-bit mode compatible release.
Various small bug-fixes relating to use of path variables.
Impact$Write variable introduced: see !Run file for details.
Removed dependence on Squash utility.
Other small bugs removed.
Updated WWW and EMail support buttons on Info box.
Videos and Addresses example databases corrected.
Support for serial block drivers added, enabling commands to be sent to modems connected to serial card podules and internal modems etc. These are now supported by two new action commands, as follows:
‘name’ and ‘string’ may be any valid string expressions.
Both of these commands require that the !SerialDev application has been ‘seen’, so that ‘SerialDev$Path’ has been defined.
Problem indexing multiple fields fixed.
New database ‘file open’ message fixed.
First version marketed by CJE.
Multiple table displays now implemented. Previously, only one table could be displayed at one time, there is now no restriction. Cancelling the table tool will close all tables open for that database.
Full support for long database names.
Document directory limit in merge window corrected.
Please note that Impression does not correctly handle long file names.
This release adds 8 new maths operators, 2 new functions, and one new action command.
| Operator | Action | Priority |
|---|---|---|
| | | Bitwise OR | 6 |
| ^ | Bitwise XOR | 7 |
| & | Bitwise AND | 8 |
Values operated on are converted to integers if necessary before the operation.
| Operator | Action | Priority |
|---|---|---|
| >> | Shift right | 11 |
| << | Shift left | 11 |
Values operated on are converted to integers if necessary before the operation.
| Operator | Action | Priority |
|---|---|---|
| *= | n = n * x | 2 |
| /= | n = n / x | 2 |
| %= | n = n % x | 2 |
The Label and Export Tools
These tool boxes now have enhanced record selection facilities. In addition to the ‘Single’ and ‘Multiple’ record selectors there is an added ‘Selection’ button. This allows label printing or export using records selected in the Table display. If there is no table, or no selected records, then this option will be greyed out.
These two tools have also have the facility to select the start record when ‘Multiple’ is selected. This may be either ‘First’ to start from the beginning of the database, or ‘Here’ to start from the current record.
Zero dates caused error messages when machine was set to BST.
Problem with ‘record 1 doesn't exist’ errors, when database first created. This was introduced into 3.08, and now fixed.
Error in !Run file corrected. Impact$Choices was used before being defined.
When drag-and-dropping one field into another, holding down the left-hand control key will cause the text to be added to that already in the field, rather than replacing it. The use of Shift will cause a ‘move’ rather than ‘copy’ action, as previously, with or without the control key.
A new function created - Exists( text variable ) This returns True or False depending on whether the given variable exists. i.e. if ( Exists("fred") ) fred = "Hello world"; This allows tool scripts to assign variables which may not exist on all databases or cards.
Problem with ‘_’ in database names fixed.
Script modified for ‘Save’ tool.
Bug fix concerning dates. Dates stored during BST were being displayed one day early in GMT mode. (Due to midnight going back to 23:00 the day before.) All times and dates in Impact are now both stored and displayed as given, and no adjustment is made for any time zone in effect.
On systems with the ‘new’ boot structure, having a global Choices directory defined by the system variable Choices$Dir, existing Choices will be moved to this new location. On older systems without a global Choices directory, Choices will be held in the installation directory alongside !Impact and !LabPrint.
Saving a card containing foreign fields, was setting the ‘changed data’ flag ‘*’ in the foreign card's title bar (while updating the foreign database). This is now fixed.
Silly bug introduced in 3.06 fixed. Editing card labels was screwed up.
Error in ‘Age’ function corrected.
New Choices option: Return = ‘next icon’ button at bottom of choices window. If set, the Return key will move the caret to the next icon, rather than saving the current card data. This mimics the ‘old’ system, if preferred. This only works in database card fields.
Minor bug fixes and improvements.
In edit-card mode, or when creating a database, the current card can be marked as being the preferred card. This will be the card which is opened by default, when the database is first opened. If no cards are marked as preferred, then either card ‘Main’ will be opened if it exists, or the first card found will be opened. This option can be found on the card attributes window, by selecting ‘Card’ from the main edit-card menu.
When editing a card, changing the displayed card name will now result in the card being renamed. Previously, this created a new card. Use the ‘New card’ menu option to create a new card.
Misc bug fixes and error traps improved.
Throw-back is now supported while executing action script files. If your text editor supports this protocol, instead of an error window being displayed as a result of an error in the file, a ‘Throw-back’ window will be opened giving the error message and the line in the file. Double-clicking on this message will cause the offending file to be displayed for editing, and the error line highlighted. This feature requires the DDEUtils module.
New calculation functions:
New action commands:
It is now possible to supply help (via the Acorn !Help facility) for tools and card fields. The latter is useful where the database designer is not the end user. These texts are held in a file called ‘Help’ within the database directory and conform to the Acorn standard syntax. In order to facilitate the use of help texts, a new entry in the ‘Edit field' menu has been introduced, leading to a help entry window. Clicking ‘Save’ in this window will insert the supplied text into the relevant file. The ‘Edit tool’ menu has also been given a similar entry.
Text strings used in action commands may now include control characters, prefixed by ‘\’ (back-slash). Allowed codes are:
| \n | newline |
| \r | return |
| \t | tab |
| \" | quote (to embed a quote into a literal string.) |
| \x## | any ascii character, where ## should be hex digits. |
| \\ | to insert a back-slash. |
e.g. address = "59, High Street,\nLondon\nN10 2GT"
The ‘import’ facility now allows record overlay. If the ‘Overlay’ option in the import tool window is selected, the first field imported is assumed to be a key field. (Hint: Use a field map). The database will be searched for a record where the field content matches incoming data. If found, this record will be overwritten by the incoming data, otherwise a new record will be created.
Note that since the database must be scanned from the beginning to search for a matching record for each record imported, importing into large databases may take several minutes.
Action buttons added to iconbar info box to send email to Circle Software and to access our WWW site. These actions depend on the relevant internet applications being available on your computer.
Moving fields in ‘edit card’ mode. The ‘mover’ buttons displayed on all field edit windows have been romoved, and a single move facility made available on the Edit menu. This change makes sense, as the move facility moves all fields within a selection, not just a single field.
An option to make fields non-writable has been added to text, sequence, date and number field edit windows. This may be useful where, say, a date field contains today's date as a default entry, which must not be changed at a later time. To make a field non-writable, simply click on the ‘Non-writable’ button to tick it.
A ‘shift-drag’ of one field to another will now do a ‘move’. i.e. the content of the source field will be deleted, consistent with standard Acorn drag-and-drop protocol.
The ‘option’ and ‘flag’ field types may now have an action script, which will be executed whenever the field is clicked. To create an action command script, click in the ‘Program’ button, as for an action button. The ‘CardText()’ function is useful in these actions, for finding the new displayed setting of the field, before it is saved to disc. The action commands may, for example, prohibit a given selection depending on other field contents, set specific values into other fields depending on the options chosen, etc.
When in ‘edit card’ mode, the field edit window may be displayed by double-clicking on a field, as well as selecting ‘Edit...’ from the menu. This is now consistent with previous versions of Impact.
This Notes file now available from the iconbar menu.
Updated version of Impact Professional, including many changes.
Impact Junior & Major discontinued.
Full details are documented in Impact-3 Manual Supplement, May 98.