home *** CD-ROM | disk | FTP | other *** search
- // BDE - (C) Copyright 1995 by Borland International
-
- // Range.c
- #include "snipit.h"
-
- static const char szTblName[] = "stock";
- static const char szTblType[] = szPARADOX;
-
- //=====================================================================
- // Function:
- // Range();
- //
- // Description:
- // This example shows how to limit the accessible records
- // within a table using ranges.
- //=====================================================================
- void
- Range (void)
- {
- DBIResult rslt; // Return value from IDAPI functions
- hDBIDb hDb; // Handle to the database
- hDBICur hCur; // Handle to the table
- CURProps TblProps; // Table properties
- pBYTE pRecBufLow; // Record buffer
- pBYTE pRecBufHigh; // Record buffer
- UINT32 uNumRecs = 0; // Number of records to display
- DFLOAT fLowRange; // Low value for the range
- DFLOAT fHighRange; // High value for the range
-
- Screen("*** Range Operations Example ***\r\n");
-
- BREAK_IN_DEBUGGER();
-
- Screen(" Initializing IDAPI...");
- if (InitAndConnect(&hDb) != DBIERR_NONE)
- {
- Screen("\r\n*** End of Example ***");
- return;
- }
-
- Screen(" Setting the database directory...");
- rslt = DbiSetDirectory(hDb, (pCHAR) szTblDirectory);
- ChkRslt(rslt, "SetDirectory");
-
- Screen(" Open the %s table...", szTblName);
- rslt = DbiOpenTable(hDb, (pCHAR) szTblName, (pCHAR) szTblType,
- NULL, NULL, 0, dbiREADWRITE, dbiOPENSHARED,
- xltFIELD, FALSE, NULL, &hCur);
- if (ChkRslt(rslt, "OpenTable") != DBIERR_NONE)
- {
- CloseDbAndExit(&hDb);
- Screen("\r\n*** End of Example ***");
- return;
- }
-
- // Allocate space for the record buffer.
- rslt = DbiGetCursorProps(hCur, &TblProps);
- ChkRslt(rslt, "GetCursorProps");
-
- pRecBufLow = (pBYTE) malloc(TblProps.iRecBufSize * sizeof(BYTE));
- pRecBufHigh = (pBYTE) malloc(TblProps.iRecBufSize * sizeof(BYTE));
- if ((pRecBufHigh == NULL) || (pRecBufLow == NULL))
- {
- if (pRecBufHigh) free(pRecBufHigh);
- if (pRecBufLow) free(pRecBufLow);
- Screen(" Error - Could not allocate memory.");
- CloseDbAndExit(&hDb);
- Screen("\r\n*** End of example ***");
- return;
- }
-
- fLowRange = 2315.0; // Lowest stock number to display.
- fHighRange = 5313.0; // Highest stock number to display.
-
- Screen("\r\n Change the range of the table: only display"
- " records\r\n which have a 'Stock No' between %.1f"
- " and %.1f", fLowRange, fHighRange);
-
- rslt = DbiPutField(hCur, 1, pRecBufLow, (pBYTE) &fLowRange);
- ChkRslt(rslt, "PutField");
-
- rslt = DbiPutField(hCur, 1, pRecBufHigh, (pBYTE) &fHighRange);
- ChkRslt(rslt, "PutField");
-
- rslt = DbiSetRange(hCur, FALSE, 0, 0, pRecBufLow, FALSE, 0, 0,
- pRecBufHigh, TRUE);
- ChkRslt(rslt, "SetRange");
-
-
- Screen("\r\n Display the %s table...", szTblName);
-
- rslt = DbiSetToBegin(hCur);
- ChkRslt(rslt, "SetToBegin");
- DisplayInMemoryTable(hCur, uNumRecs);
-
- Screen("\r\n Change the range of the table: no range set");
- rslt = DbiResetRange(hCur);
- ChkRslt(rslt, "SetRange");
-
- rslt = DbiSetToBegin(hCur);
- ChkRslt(rslt, "SetToBegin");
-
- Screen(" Display the %s table...", szTblName);
- DisplayInMemoryTable(hCur, uNumRecs);
-
- Screen("\r\n Change to the secondary index on field two...");
- rslt = DbiSwitchToIndex(&hCur, NULL, NULL, 2, FALSE);
- ChkRslt(rslt, "SwitchToIndex");
-
- fLowRange = 4000.0; // Lowest vendor number to display.
- fHighRange = 6000.0; // Highest vendor number to display.
- Screen("\r\n Change the range of the table: only display records\r\n"
- " which have a Vendor No between %.1f and"
- " %.1f...", fLowRange, fHighRange);
-
- rslt = DbiPutField(hCur, 2, pRecBufLow, (pBYTE) &fLowRange);
- ChkRslt(rslt, "PutField");
-
- rslt = DbiPutField(hCur, 2, pRecBufHigh, (pBYTE) &fHighRange);
- ChkRslt(rslt, "PutField");
-
- rslt = DbiSetRange(hCur, FALSE, 0, 0, pRecBufLow, FALSE, 0, 0,
- pRecBufHigh, FALSE);
- ChkRslt(rslt, "SetRange");
-
-
- Screen("\r\n Display the %s table...", szTblName);
-
- rslt = DbiSetToBegin(hCur);
- ChkRslt(rslt, "SetToBegin");
- DisplayInMemoryTable(hCur, uNumRecs);
-
- free(pRecBufLow);
- free(pRecBufHigh);
-
- Screen("\r\n Close the %s table...", szTblName);
- rslt = DbiCloseCursor(&hCur);
- ChkRslt(rslt, "CloseCursor");
-
- Screen(" Close the Database and exit IDAPI...");
- CloseDbAndExit(&hDb);
-
- Screen("\r\n*** End of Example ***");
- }
-