The latest version of Impact is 3.30 - 17th October 2008
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.
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.