PRODUCT : TURBO BASIC NUMBER : 428 VERSION : ALL OS : PC DATE : MAY 10, 1988 PAGE : 1/3 TITLE : TURBO BASIC DATABASE TOOLBOX FIXES This handout documents the existing Turbo Basic Database Toolbox fixes for known problems Correction One Import R.BAS Problem: All occurrences of dfLen need to be changed to dfLen& in Import R.BAS. There are four occurrences at lines 11, 177, 192, 266. Solution: 'line #11: DIM dfType(100), dfAddr&(100), dfLen&(100) 'line #177: dfLen&(I) = CVL(MID$(InBuf$, 63 + TenI, 4)) 'line #192: GET$ #InpFile, dfLen&(FDIdx), InBuf$ 'line 266: GET$ #InpFile, dfLen&(DMRIdx), InBuf$ Correction Two DSD - GETKEY.BOX Problem: If DSD is compiled to an .EXE file with Bounds checking turned on, the program will exit to DOS with an error. If Bounds checking is turned off no error occurs. Solution: Line 72 of GETKEY.BOX should be changed from KeyVal$ = SPACE$(KeyLength) to KeyVal$ = LEFT$(KeyVal$ + SPACE$(KeyLength), KetLength) Line 91 of GETKEY.BOX which reads: IF dbCurPgRef&(DataSet) < 2 THEN CALL ClearKey(DataSet) PRODUCT : TURBO BASIC NUMBER : 428 VERSION : ALL OS : PC DATE : MAY 10, 1988 PAGE : 2/3 TITLE : TURBO BASIC DATABASE TOOLBOX FIXES should be deleted Correction Three CLIENT - DELETING A RECORD Problem: Entering an initial customer record in client then deleting it causes a file handling error #52 Solution: Line 124 of of DELKEY.BOX should be changed from IF Level = 1 AND ItemCount =1 THEN 'delete top page NewRoot& = CVL(MID$(dbPool$(dbCurBf), %TagSize+1 + _ KeyLength, %RNOSize) to IF Level = 1 AND ItemCount = 1 _ AND (dbLevelCount(DataSet) > 1) THEN 'delete top page NewRoot& = CVL(MID$(dbPool$(dbCurBf), %TagSize+1 + _ KeyLength, %RNoSize)) Explanation: The IF statement is modified to account for the current level-count of the Dataset whose key page is about to be deleted and to prevent deletion if the level-count is already at 1. Correction Four STATE.BAS Problem: Fatal Error 63 occurs in STATE.BAS Solution: Workaround is obtained via correction three Correction Five FEXISTS.BOX PRODUCT : TURBO BASIC NUMBER : 428 VERSION : ALL OS : PC DATE : MAY 10, 1988 PAGE : 3/3 TITLE : TURBO BASIC DATABASE TOOLBOX FIXES Problem: the FNFileExists function in FEXISTS.BOX doesn't set up its own data transfer area thereby trashing the parameter line buffer in the UI. Replace the code in FEXISTS.BOX with the following. DEF fnFileExists (FileSpec$) ON ERROR GOTO ErrorHandler OPEN FileSpec$ FOR INPUT AS #32760 FNFileExists = -1 CLOSE 32760 Finish: ON ERROR GOTO 0 EXIT DEF ErrorHandler: FNFileExists = 0 RESUME Finish END DEF 'FileExists Correction Six ACCESS.BOX line 144 change MaxRecLen to MinRecLen