{ navigate.pas } program Navigate; {$IfDef VER80} uses SnipTool, SnipData, SysUtils, WinTypes, WinProcs, DbiProcs, DbiTypes, DbiErrs; {$Else} uses WinTypes, WinCrt, Strings, DbiProcs, DbiTypes, DbiErrs, SnipTool, SnipData; {$EndIf} const szTblName = 'customer'; { Name of table to be created. } szTblType = szPARADOX; { Table type to use. } {======================================================================== Code: Navigate(); Input: None. Return: None. Description: This sample code will open the customer database and will navigate around it. Such as getting and displaying the current record. Getting the next record. Getting the previous record and getting the record relative to the offset given. ======================================================================== } var rslt: DBIResult; { Value returned from IDAPI functions } hDb: hDBIDb; { Handle to the database } hCur: hDBICur; { Handle to the table } begin Screen('*** Navigation Example ***'); Screen(' Initializing IDAPI...'); if (InitAndConnect(hDb) <> DBIERR_NONE) then { Terminate example if } begin { Initialization fails } Screen(''); Screen('*** End of Example ***'); exit; end; Screen(' Setting the Database directory...'); ChkRslt(DbiSetDirectory(hDb, pCHAR(szTblDirectory)), DBIERR_NONE, ' Error - SetDirectorry.'); Screen(' Opening the '+szTblName+' Table...'); rslt := ChkRslt(DbiOpenTable(hDb, pCHAR(szTblName), pCHAR(szTblType), nil, nil, 0, dbiREADWRITE, dbiOPENSHARED, xltFIELD, FALSE, nil, hCur), DBIERR_NONE, ' Error - OpenTable.'); if (rslt <> DBIERR_NONE) then { Check if successfull } begin Screen(' Close the Database and exit IDAPI...'); CloseDbAndExit(hDb); Screen(''); Screen('*** End of Example ***'); exit; end; Screen(' Display the first ten records in the Table...'); DisplayInMemoryTable(hCur, 10); Screen(''); Screen(' Set the current record to the first record in the'+ ' table.'); ChkRslt(DbiSetToBegin(hCur), DBIERR_NONE, ' Error - SetToBegin.'); {We need to display the next record as we are currently at the BOF crack.} DisplayNextRecord(hCur); Screen(''); Screen(' Change to the next record...'); ChkRslt( DbiGetNextRecord(hCur, dbiNOLOCK, nil, nil), DBIERR_NONE, ' Error - GetNextRecord.'); Screen(' New current record:'); DisplayCurrentRecord(hCur); { Skip 3 records. We will be passing the function a nil record buffer as we only want to skip and we don't want to fill a record buffer.} Screen(''); Screen(' Getting the 3rd record relative to the current record...'); Screen(' New Current record:'); ChkRslt( DbiGetRelativeRecord(hCur, 3, dbiNOLOCK, nil, nil), DBIERR_NONE, ' Error - GetRelativeRecord.'); DisplayCurrentRecord(hCur); Screen(''); Screen(' Set the cursor to the previous record...'); Screen(' New Current record:'); ChkRslt( DbiGetPriorRecord(hCur, dbiNOLOCK, nil, nil), DBIERR_NONE, ' Error - GetPriorRecord.'); DisplayCurrentRecord(hCur); Screen(''); Screen(' Set the current record to the last record in the table'); Screen(' New Current record:'); { Set the cursors current record pointer to EOF } ChkRslt( DbiSetToEnd(hCur), DBIERR_NONE, ' Error - SetToEnd.'); { Set the cursors to the last record in the table. } ChkRslt( DbiGetRelativeRecord(hCur, -1, dbiNOLOCK, nil, nil), DBIERR_NONE, ' Error - GetRelativeRecord.'); DisplayCurrentRecord(hCur); Screen(''); Screen(' Close the database and exit IDAPI...'); CloseDbAndExit(hDb); Screen('*** End of Example ***'); end.