{ fieldmap.pas } program FieldMap; {$IfDef VER80} uses SnipTool, SnipData, SysUtils, WinTypes, WinProcs, DbiProcs, DbiTypes, DbiErrs; {$Else} uses WinTypes, WinCrt, Strings, DbiProcs, DbiTypes, DbiErrs, SnipTool, SnipData; {$EndIf} const NAMELEN = 20; szTblName = 'Vendors'; szTblType = szPARADOX; const FldDes: array[0..1] of FLDDesc = ( ( iFldNum: 1; { Field Number } szName: 'Vendor Name';{ Field Name } iFldType: fldZSTRING; { Field Type } iSubType: fldUNKNOWN; { Field Subtype } iUnits1: NAMELEN; { Field Size } iUnits2: 0; { Decimal places ( 0 ) } iOffset: 0; { Offset in record ( 0 ) } iLen: 0; { Length in Bytes ( 0 ) } iNullOffset: 0; { For Null Bits ( 0 ) } efldvVchk: fldvNOCHECKS; { Validiy checks ( 0 ) } efldrRights: fldrREADWRITE { Rights } ), ( iFldNum: 2; szName: 'State/Prov'; iFldType: fldZSTRING; iSubType: fldUNKNOWN; iUnits1: NAMELEN; iUnits2: 0; iOffset: 0; iLen: 0; iNullOffset: 0; efldvVchk: fldvNOCHECKS; efldrRights: fldrREADWRITE ) ); {===================================================================== Code: TBFieldMap(); Input: None. Return: None. Description: This example shows how to change which fields of a table are active at any given table. By default, all fields are active. Field mapping allows for easily limiting the scope of available data. ===================================================================== } var hDb: hDBIDb; { Handle to the Database } hCur: hDBICur; { Handle to the table } uNumFields: INT16; { Number of fields in the mapping } const uNumRecs: UINT32 = 10; { Number of records to display } begin Screen('*** Field Mapping 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 default Database directory...'); ChkRslt(DbiSetDirectory(hDb, pCHAR(szTblDirectory)), DBIERR_NONE, ' Error - SetDirectory.'); Screen(' Open the '+szTblName+' table....'); if (ChkRslt(DbiOpenTable(hDb, pCHAR(szTblName), pCHAR(szTblType), nil, nil, 0, dbiREADWRITE, dbiOPENSHARED, xltFIELD, FALSE, nil, hCur), DBIERR_NONE, ' Error - OpenTable.') <> DBIERR_NONE) then begin Screen(' Clean up IDAPI...'); CloseDbAndExit(hDb); Screen(''); Screen('*** End of Example ***'); exit; end; Screen(' Change the fields that are visible in the table...'); { Determine the number of fields in the descriptor } uNumFields := trunc(sizeof(FldDes) / sizeof (FldDes[0])); { Set the field mapping as specified in the field descriptor } ChkRslt(DbiSetFieldMap(hCur, uNumFields, @FldDes), DBIERR_NONE, ' Error - SetFieldMap.'); ChkRslt(DbiSetToBegin(hCur), DBIERR_NONE, ' Error - SetToBegin.'); Screen(' Display the table with an active field map...'); ChkRslt(DisplayTable(hCur, uNumRecs), DBIERR_NONE, ' Error - DisplayTable.'); Screen(''); Screen(' Remove all field mappings...'); ChkRslt(DbiSetFieldMap(hCur, 0, nil), DBIERR_NONE, ' Error - SetFieldMap.'); ChkRslt(DbiSetToBegin(hCur), DBIERR_NONE, ' Error - SetToBegin.'); Screen(' Display the table without any field mapping...'); ChkRslt(DisplayTable(hCur, uNumRecs), DBIERR_NONE, ' Error - DisplayTable.'); Screen(''); Screen(' Close the '+szTblName+' table....'); ChkRslt(DbiCloseCursor(hCur), DBIERR_NONE, ' Error - CloseCursor.'); Screen(''); Screen(' Close the Database and exit IDAPI...'); CloseDbAndExit(hDb); Screen('*** End of Example ***'); end.