Home
Personal Info and Holiday Snaps How to contact Kevin Millican Java Chatroom Software for Nokia 9200 Series and other Symbian OS6 Programming Articles Pocket Computer & PDA Links Software for Psion Series 5 / 5mx / Revo(+) / Series 7 / netBook / Osaris / Geofox / Ericsson MC218 and other ER3-ER5 devices PDA Articles General Computing Links Psion Series 3a/c/mx Software PC Articles Christian Links PC Software Technical Articles Metallurgy & Welding Links Software for Other Platforms & Web Development Miscellaneous Articles General Links Main Menu

PsiDat Revision History

Revision Details
v1.13 Fixed a few bugs and inconsistencies in the filtered lookup routines. These mainly affected filtered lookups using real number criteria when the decimal separator was set to a comma instead of a decimal point.
However, the text field lookup was also affected.
All of these are issues are fixed in this release.

This has also highlighted an international issue with regard to calculations that include constants.

For example, the calculation:-

[1]*17.5/117.5

will work on machines with the decimal separator set to a decimal point but not if it is set to a comma.

One workaround is to specify the same constant without a decimal separator, eg:-

[1]*35/235

will work regardless of the decimal separator.

An alternative, where real constants have to be used, is to make use of the built-in real global variables provided, ie. u(1) to u(100) and set these via a custom OPL routine containing a userauto: procedure:-

PROC userauto:
u(1)=17.5 REM UK VAT rate
ENDP

The calculation string could then be changed to:-

[1]/( u(1) / (100+u(1)) )

Another alternative is to put all the required constants in a separate table and refer to them using xref:()
(In this example this might be the best choice anyway since a VAT rate will vary between countries and would be better as a user-defined value).

XRef has been modified so that it can also obtain datetime variables. The syntax for the access string with a datetime lookup against a text variable would be "$D" (ie. 'D' represents a datetime). The numeric equivalent of the date is returned for numeric fields and a full datetime string for a text field.

A feature has been added to the field properties procedure to make debugging of lookup tables and calculations easier. Immediately after changing a field's properties (or at least pressing 'Enter' to confirm them), single tap calculations/lookups are debugged. This mode is aborted as soon as a full record recalculation is carried out or a new table selected.

The XRef function and lookups/helps have been modified so that embedded quotes can be accepted.

Added <MF> (Male/Female) modifier for bit fields.

Added <AP1>, <AP2>, <AP3>, <AP4>, <AP5> modifiers for field using helps - these cause the help result to be appended to the current field instead of replacing its contents.
Improved pasting text into a field.

Added XML export to the HTML export options.
v1.12 Fixed bug in text import routine that made negative numbers import as text rather than numbers.

Added 'Delete all records in view option'

Fixed bug that prevented last record being shown in list view and added horizontal scrolling via the keyboard and left column fieldname info.

Modified general-purpose file dialog so that files in the system folder can be accessed for embedding objects.

Modified DayNm$:(n$) function so that it can process DateTime fields directly as well as numeric fields. The function will also work with text fields containing dates provided that the date layout matches that set in the general properties.

Improved the speed and overall range of the date functions and added the missing one - IsToday:([1])

Added text functions Date:([1]), Time:([1]) to extract the relevant portion from a datetime field.

Added Mid:([1]|n1|n2), Left:([1]|n), Right:([1]|n) text functions.

Example; if field 1 contains numeric value 12, then
Right:(00000[1]|5) returns 00012

Added function Month:([1]) and text function MonthNm:([1])

Added 'Rich Text' as a special use for LongBinary fields. This is a bit of a cheat really, although quite effective; a Jotter template ('PsiJot' - stored in the PsiDat application directory) is used to create a single-tap entry into an embedded jotter file 'edit-view' without toolbar. As soon as the field is tapped, the jotter file is launched (after creating a blank one if the field is empty). If the Jotter file has changed then closing it will bring up the normal 'File has changed. Update ... ?' dialog with an extra (delete) option.

A table lookup cross-reference function xRef: has been added for calculated fields.

Lookup definition for separate lookup tables has been enhanced. The lookup can be filtered according to criteria entered after the table name, eg. for a lookup table called 'mylook' being called from field 2, you can now enter, eg. :-

mylook WHERE price > 0.1 AND price < 0.3

or

mylook WHERE price > [1]

to only list lookups with a value greater than that in field 1. Sort order can also be appended, eg.
mylook WHERE price > [1] ORDER BY price

Minor revision to the HTML export routine to deal with non-breaking spaces and single newlines in memo fields.

Fixed bug in the dBase export that occurred when a PsiDat table contains field types other than 0-11 or 14 (ie. fields that cannot be converted to valid dBase types)
v1.11 Added field modifier <ST> which makes cursor start at the beginning of the text instead of the end when editing.

Added field modifier <NOA> which prevents text being auto-added to helps.

Changed the way that user-defined OPL routines are used. USER.OPO is no longer supported. To use an OPO file it must be embedded in the 2nd record of the zPsiDatDefaults table. This means that user-defined functions and menu can be included in a single PsiDat database. If more than one PsiDat session is open they can all use separate user OPO files provided that they do not have the same filename. The OPO file is created in the PsiDat application directory and named <mydb>.OPO where '<mydb>' is the name of the database that the file is embedded in.

Added the facility to prevent the user from changing the table to any of those beginning 'zPsiDat...' This is done by entering a password in the first field of the 2nd record in zPsiDatDefaults so it is particularly effective when combined with a user menu. To unlock a locked database, type '~' to access a password dialog.

Improved the field editing so that the pen may be used to position the cursor within a field as it is being edited.

Swapped the shortcut key from 'Restructure' to 'Show Record Info' so that programmers defining their own menu can prevent any structural changes to their database if desired.

Added hidden keyboard shortcut to switch to RealMaps if it is running (shift-K). The same function to return has been added to RealMaps v5.09 so shift-K alternates between the two programs if they are both running.

Fixed bug that prevented number formats being shown correctly in reports (though summary values are still unaffected by these).

Added WeekDay:(n) function to return the day number (1-7) from a datetime field or its numeric equivalent.

Added Day:(n) function to return the number of days since 1/1/1970 from a datetime field or its numeric equivalent.

Added DayNm$:(n$) text function to return a three character day-of-the-week name from a number ("1"-"7")

Modified the Text and HTML export so that the user can select which fields to export. The field modifier <NOE> causes the field to be switched off by default.

Added Ctrl-B and shift-Ctrl-B options to toggle field and label text attributes (bold & italics on/off).

Improved dBase export routine so that fieldnames that are truncated to ten characters are always unique.

Added <HTM> field modifier. If this flag is used then no text-to-HTML conversion is used on the field when exporting HTML

Added the tab key character to those that can be used to separate modifiers from calculation strings and lookup table names. For new applications it is recommended that this character is used in preference to the space or comma (the advantage of the tab character is that it can be used in text calculations/concatenations - everything from the tab onwards is ignored when performing calculations/lookups).

Enabled 'Paste' (Ctrl-V) function during field editing.

List View - By tapping the far left of the screen or typing shift-V a list view is shown. Use the scroll bar or up/down keys to navigate and then tap on the desired record. Pressing Esc or tapping the toolbar will abort maintaining the original record position. Pressing Enter will move to the top record in the view.

Changed the default export filename for TXT, HTM, and DBF files to the current tablename plus the '.TXT', 'HTM', or 'DBF' extension.

Provided predefined global variables for user's custom routines :- GLOBAL u(100),u%(100),u&(100),u$(20,255)

Modified the 'Show Summary' output so that if an SQL filter is applied, the SQL string is shown under the database and table information.

Added character map feature (shift-Ctrl-C) to the field edit routine. This is slightly different to the built-in EPOC function because the entire character set can be used. Invisible or awkward characters to the left of the cursor are reported as 'CHR$(...)' after a keypress.
v1.10 Modified PsiDat's Icon (again) so that it looks better and is in colour under WINS and on the Series 7/Netbook

Added option to change the background and label colours.

Altered language selector so that toolbar buttons are immediately updated when changing language.

Fixed k$(116) bug in dBase import dialog and a few missing text strings.

Modified 'Save As' and 'Restructure' routines so that if the view is filtered with an SQL query, only the matching records are copied over to the new table.

Changed the PsiDat temporary field definition filename from PsiDat.DAT to PsiDatTempData to avoid OPL dialog extension bug.

Added some additional international text strings to the resource file.

Modified the record positioning system. The record position bar is now displayed for filtered views and can position anywhere in a view. In filter view the colour is changed from white to grey so that the user is still aware that the view has an SQL filter applied. When the total records in the view exceeds 65535 (an OPL limit), the absolute record number is indeterminate and the bar is shown black. However, tapping on the bar will still move to the required position in the file. The 'Goto' option will also function correctly for any number of records, but will take an increasingly long time to get there when the number of records exceeds 32767. NB: If a field is edited in a sorted table, the record position will be inaccurate until a Goto, Search, First Record, or Last Record position change. There is no way around this without losing the current record.

Improved use of transactions to speed up a number of table-writing routines and reduce the size of the open database while it is being processed.

Database compaction has been modified so that it is controlled by PsiDat instead of activated by the system everytime a file is closed. This will ensure that all files are still compacted on exit or when a table is switched, but should speed up the manipulation of very large tables since they will not be compacted when PsiDat has to close them temporarily.

Added new field modifier <INF>. This causes the field contents to be displayed along with the record number when the 'Show Record Info' option is enabled. Up to three fields can be flagged in this way. It is important to note that adding/deleting this feature on a field is only activated when the table is opened in order to keep the speed up.

Fixed minor bug in the import text dialog.

Added 'Merge In' facility.

Added date convenience functions for use in field calculations, eg. you could calculate the following for a datetime in field 1:-

Before:(2001,4,5,[1]) ie. is the date before 5th April 2001 ?
After:(2000,4,4,[1]) ie. is the date after 4th April 2000 ?
ThisYear:([1]) ie. is the date in the current year ?
ThisMonth:([1]) ie. is the date in the current month ?
ThisWeek:([1]) ie. is the date in the current week ?

All of the above return 1 for true or 0 for false

WeekNo:([1])
- returns the week number based on the EPOC machine settings for the first day of the week.

DateTime:(2001,4,5,15,30,0)
- returns the equivalent numerical value of 5th April 2001 3:30pm

Now:
- returns the equivalent numerical value of the current system time

Added field modifier <DEF> which causes a default value to be entered when adding a new record. The value to be entered must follow the <DEF> modifier and be the last item in the field modifiers.

Added field modifiers <UC> and <LC> to display text in upper and lower case respectively.

Modified the text calculation routine so that it can call a procedure with a single string variable. The routine must return a string variable and is called without the '$' in the procedure name. Eg. to call a routine PROC mymod$:(var$) and insert the value of field number 2, you would use :- mymod:([2])

This allows any number of user routines to be called by putting an OPL executable file called USER.OPO in the PsiDat application directory.

Example databases removed from installer.

WINS version now includes required OPX SIS files in installer.

Modified the 'Save As' and 'Restructure' file save dialog so that if the selector is seeded with a filename containing an extension, the user is asked to confirm whether the new filename should include this or not. (A 'feature' in the EPOC file selector means that if the dialog is initially seeded with the filename 'OldFile.DAT' and the user inputs a new filename 'NewFile', the selector actually returns the input filename as 'NewFile.DAT' - when this happens the user is now asked to confirm whether they mean 'NewFile' or 'NewFile.DAT')
v1.09 Fixed display error when stopwatch is used with scrollbars.

Tidied up icon a bit

Fixed error in displaying language variants for toolbar button text.

Made menu texts more consistent with design guide.
v1.08 Completely redesigned Lookup and Help text dialogs. The text size now matches that in the current view and the texts will now tolerate empty string values. This means that empty strings can be used to blank Lookup fields.

DateTime field entry dialog now defaults to the value in the field rather than the current time. A new button ('Now') has been added to update the value to the current Date/Time.

Next/Previous repeat bug on faster EPOC devices has been fixed.

Scrollbar support has been added.

Fixed bug that prevented a database being loaded when 'Use MBM Banner' was ticked in the default table dialog but no picture was present.

Fixed exit bug in 'Save As' dialog.

Added international support. New language versions can be created by making a copy of PsiDatRSC.English, renaming it to PsiDatRSC.<new language>, loading the new copy into PsiDat, and translating the text strings into <new language>. It's also possible to create new language versions of this helpfile and rename them to PsiDat-<new language>.HLP

1 ... 2 ... (3 of 5) ... 4 ... 5

<< Back