home *** CD-ROM | disk | FTP | other *** search
/ Total C++ 2 / TOTALCTWO.iso / borland / 32snipit.pak / NAVIGATE.C < prev    next >
C/C++ Source or Header  |  1997-05-06  |  4KB  |  110 lines

  1. // BDE32 3.x - (C) Copyright 1996 by Borland International
  2.  
  3. // navigate.c
  4. #include "snipit.h"
  5.  
  6. // Name of table to be created.
  7. static const char szTblName[] = "customer";
  8. // Table type to use.
  9. static const char szTblType[] = szPARADOX;
  10.  
  11. //========================================================================
  12. //  Function:
  13. //          Navigate();
  14. //
  15. //  Description:
  16. //          This sample code will open the customer database and
  17. //          navigate through it, doing operations such as getting and
  18. //          displaying the current record, getting the next record,
  19. //          getting the previous record, and getting the record relative
  20. //          to the offset given.
  21. //========================================================================
  22. void
  23. Navigate (void)
  24. {
  25.     hDBIDb      hDb = 0;    // Handle to the database
  26.     hDBICur     hCur = 0;   // Handle to the table
  27.     DBIResult   rslt;       // Value returned from IDAPI functions
  28.  
  29.     Screen("*** Cursor Navigation Example ***\r\n");
  30.  
  31.     BREAK_IN_DEBUGGER();
  32.  
  33.     Screen("    Initializing IDAPI...");
  34.     if (InitAndConnect(&hDb) != DBIERR_NONE)
  35.     {
  36.         Screen("\r\n*** End of Example ***");
  37.         return;
  38.     }
  39.  
  40.     Screen("    Setting the database directory...");
  41.     rslt = DbiSetDirectory(hDb, (pCHAR)szTblDirectory);
  42.     ChkRslt(rslt, "SetDirectorry");
  43.  
  44.     Screen("    Opening the %s table...", szTblName);
  45.     rslt = DbiOpenTable(hDb, (pCHAR)szTblName, (pCHAR)szTblType, NULL, NULL,
  46.                         NULL, dbiREADWRITE, dbiOPENSHARED, xltFIELD, FALSE,
  47.                         NULL, &hCur);
  48.     if (ChkRslt(rslt, "OpenTable") != DBIERR_NONE)
  49.     {
  50.         CloseDbAndExit(&hDb);
  51.         Screen("\r\n*** End of Example ***");
  52.         return;
  53.     }
  54.  
  55.     Screen("    Display the first ten records in the table...");
  56.     DisplayInMemoryTable(hCur, 10);
  57.  
  58.     Screen("\r\n    Set the current record to the first record in the"
  59.            " table");
  60.     rslt = DbiSetToBegin(hCur);
  61.     ChkRslt(rslt, "SetToBegin");
  62.  
  63.     // We need to display the next record as we are currently at the BOF crack.
  64.     DisplayNextRecord(hCur);
  65.  
  66.     Screen("\r\n    Change to the next record...");
  67.     rslt = DbiGetNextRecord(hCur, dbiNOLOCK, NULL, 0);
  68.     ChkRslt(rslt, "GetNextRecord");
  69.  
  70.     Screen("    New current record:");
  71.     DisplayCurrentRecord(hCur);
  72.  
  73.     // Skip 3 records.  We will be passing the function a NULL
  74.     // record buffer as we only want to skip and we don't want to fill
  75.     // a record buffer.
  76.     Screen("\r\n    Getting the 3rd record relative to the current record...");
  77.     Screen("    New Current record:");
  78.  
  79.     rslt = DbiGetRelativeRecord(hCur, 3, dbiNOLOCK, NULL, 0);
  80.     ChkRslt(rslt, "GetRelativeRecord");
  81.     DisplayCurrentRecord(hCur);
  82.  
  83.  
  84.     Screen("\r\n    Set the cursor to the previous record...");
  85.     Screen("    New Current record:");
  86.  
  87.     rslt = DbiGetPriorRecord(hCur, dbiNOLOCK, NULL, 0);
  88.     ChkRslt(rslt, "GetPriorRecord");
  89.     DisplayCurrentRecord(hCur);
  90.  
  91.     Screen("\r\n    Set the current record to the last record in the"
  92.            " table");
  93.     Screen("    New Current record:");
  94.  
  95.     // Set the cursors current record pointer to EOF
  96.     rslt = DbiSetToEnd(hCur);
  97.     ChkRslt(rslt, "SetToEnd");
  98.  
  99.     // Set the cursors to the last record in the table.
  100.     rslt = DbiGetRelativeRecord(hCur, -1, dbiNOLOCK, NULL, 0);
  101.     ChkRslt(rslt, "GetRelativeRecord");
  102.  
  103.     DisplayCurrentRecord(hCur);
  104.  
  105.     Screen("\r\n    Close the database and exit IDAPI...");
  106.     CloseDbAndExit(&hDb);
  107.  
  108.     Screen("\r\n*** End of Example ***");
  109. }
  110.