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

  1. // BDE32 3.x - (C) Copyright 1996 by Borland International
  2.  
  3. // lsqljoin.c
  4. #include "snipit.h"
  5.  
  6. //=====================================================================
  7. //  Function:
  8. //          LocalSQLJoin();
  9. //
  10. //  Description:
  11. //          This example shows how to do local SQL on a dBASE table
  12. //=====================================================================
  13. void
  14. LocalSQLJoin (void)
  15. {
  16.     hDBIDb          hDb;        // Handle to the database
  17.     hDBICur         hCur;       // Handle to the Answer Table
  18.     hDBIStmt        hStmt;      // Handle to the SQL Statement
  19.  
  20.     CHAR            szQry[]     = { // The Text of the SQL Statement
  21.            "SELECT c.name, c.city, o.'total invoice', o.'amount paid'\r\n"
  22.            "FROM   'cust.dbf' c, 'orders.db' o \r\n"
  23.            "WHERE  o.'customer no' = c.cust_no"
  24. //           "       c.cust_no < 2000\r\n"
  25. //           "ORDER BY c.name"
  26.                                   };
  27.     DBIResult       rslt;
  28.  
  29.     Screen("*** Local SQL 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, "SetDirectory");
  43.  
  44.     Screen("    Perform the following SQL statement on the table:\r\n");
  45.     Screen(szQry);
  46.  
  47.     Screen("\r\n    Allocate the statement handle...");
  48.     rslt = DbiQAlloc(hDb, qrylangSQL, &hStmt);
  49.     if (ChkRslt(rslt, "QAlloc") != DBIERR_NONE)
  50.     {
  51.         CloseDbAndExit(&hDb);
  52.         Screen("\r\n*** End of Example ***");
  53.         return;
  54.     }
  55.  
  56.     Screen("    Prepare the SQL statement...");
  57.     rslt = DbiQPrepare(hStmt, szQry);
  58.     if (ChkRslt(rslt, "QPrepare") != DBIERR_NONE)
  59.     {
  60.         CloseDbAndExit(&hDb);
  61.         Screen("\r\n*** End of Example ***");
  62.         return;
  63.     }
  64.  
  65.     Screen("    Execute the SQL statement...");
  66.     rslt = DbiQExec(hStmt, &hCur);
  67.     if (ChkRslt(rslt, "QExec") != DBIERR_NONE)
  68.     {
  69.         CloseDbAndExit(&hDb);
  70.         Screen("\r\n*** End of Example ***");
  71.         return;
  72.     }
  73.  
  74.     if (hCur)
  75.     {
  76.         // If the cursor is valid, display the information
  77.         Screen("    Display the first 10 Records in the answer table...");
  78.         rslt = DbiSetToBegin(hCur);
  79.         ChkRslt(rslt, "SetToBegin");
  80.         DisplayTable(hCur, 10);
  81.  
  82.         Screen("\r\n    Close the cursor to the answer set...");
  83.         rslt = DbiCloseCursor(&hCur);
  84.         ChkRslt(rslt, "CloseCursor");
  85.     }
  86.     else
  87.     {
  88.         Screen("        Could not get cursor to the answer table");
  89.     }
  90.  
  91.     Screen("    Release memory allocated for the query...");
  92.     rslt = DbiQFree(&hStmt);
  93.     ChkRslt(rslt, "QryFree");
  94.  
  95.     Screen("    Close the database and exit IDAPI...");
  96.     CloseDbAndExit(&hDb);
  97.  
  98.     Screen("\r\n*** End of Example ***");
  99. }
  100.