// BDE - (C) Copyright 1995 by Borland International // TextExp.c #include "snipit.h" static const char szSrcTblName[] = "CUSTOMER.DB"; static const char szSrcTblType[] = szPARADOX; static const char szDestTblName[] = "CUSTOMER.TXT"; static const char szDestTblType[] = szASCII; //===================================================================== // Function: // TextExport(); // // Description: // This example shows exporting data from a Paradox table // to a text file. The "customer.db" table will be used as the // source table and a "customer.txt" table will be created as // the destination table. The DbiBatchMove function is used to // copy the records from one table to another. //===================================================================== void TextExport (void) { DBIResult rslt; // Return value from IDAPI functions hDBIDb hDb; // Handle to the database hDBICur PDhCur; // Paradox cursor handle hDBICur TXThCur; // Text cursor handle BATTblDesc TxtTblDesc; // Descriptor for the text table Screen("*** Text Export 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(" Force the use of a schema file for the text table..."); rslt = DbiSetProp(hDb, dbUSESCHEMAFILE, (UINT32)TRUE); ChkRslt(rslt, "SetProp"); Screen("\r\n Opening the %s Paradox table...", szSrcTblName); rslt = DbiOpenTable(hDb, (pCHAR) szSrcTblName, (pCHAR) szSrcTblType, NULL, NULL, 0, dbiREADWRITE, dbiOPENSHARED, xltFIELD, FALSE, NULL, &PDhCur); if (ChkRslt(rslt, "OpenTable") != DBIERR_NONE) { CloseDbAndExit(&hDb); Screen("\r\n*** End of Example ***"); return; } rslt = DbiSetToBegin(PDhCur); ChkRslt(rslt, "SetToBegin"); // Set the information for the destination table. TxtTblDesc.hDb = hDb; strcpy(TxtTblDesc.szTblName, szDestTblName); strcpy(TxtTblDesc.szTblType, szDestTblType); Screen("\r\n Create a text table copied from the %s %s table...", szSrcTblName, szSrcTblType); rslt = DbiBatchMove(NULL, PDhCur, &TxtTblDesc, NULL, batCOPY, 0, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, NULL, TRUE); ChkRslt(rslt, "Batch Move"); // Note that the table type has to be specified with the delimiter // and separator since we are opening the table as a delimited text // file. Screen("\r\n Opening the %s Text table using schema information...\r\n", szDestTblName); rslt = DbiOpenTable(hDb, (pCHAR)szDestTblName, "ASCIIDRV", NULL, NULL, 0, dbiREADWRITE, dbiOPENSHARED, xltFIELD, FALSE, NULL, &TXThCur); if (ChkRslt(rslt, "OpenTable") != DBIERR_NONE) { rslt = DbiCloseCursor(&PDhCur); ChkRslt(rslt, "CloseCursor"); CloseDbAndExit(&hDb); Screen("\r\n*** End of Example ***"); return; } Screen(" Displaying the first 10 records of the %s text table...", szDestTblName); DisplayTable(TXThCur, 10); Screen("\r\n Closing the %s table...", szDestTblName); rslt = DbiCloseCursor(&TXThCur); ChkRslt(rslt, "CloseCur"); Screen(" Delete the %s table...", szDestTblName); rslt = DbiDeleteTable(hDb, (pCHAR)szDestTblName, NULL); ChkRslt(rslt, "DeleteTable"); Screen("\r\n Closing the %s table...", szSrcTblName); rslt = DbiCloseCursor(&PDhCur); ChkRslt(rslt, "CloseCur"); Screen(" Close the database and exit IDAPI..."); CloseDbAndExit(&hDb); Screen("\r\n*** End of Example ***"); }