// BDE - (C) Copyright 1995 by Borland International // cr8dbtbl.c #include "snipit.h" static const char szTblName[] = "CR8DBTBL"; static const char szTblType[] = szDBASE; // Field descriptor used in creating a table. static SNIPFAR FLDDesc fldDesc[] = { { // Field 1 - FLOAT 1, // Field number "FLOAT", // Field name fldFLOAT, // Field type fldUNKNOWN, // Field subtype 8, // Field size ( 1 or 0, except // BLOB, CHAR fields, dBASE FLOAT, // NUMERIC fields ) 0, // Decimal places ( 0 ) // computed 0, // Offset in record ( 0 ) 0, // Length in bytes ( 0 ) 0, // For Null bits ( 0 ) fldvNOCHECKS, // Validity checks ( 0 ) fldrREADWRITE // Rights }, { // Field 2 - CHARACTER 2, "CHARACTER", fldZSTRING, fldUNKNOWN, 12, 0, 0, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 3 - NUMERIC 3, "NUMERIC", fldFLOAT, fldUNKNOWN, 6, 0, 0, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 4 - DATE 4, "DATE", fldDATE, fldUNKNOWN, 0, 0, 0, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 5 - LOGICAL 5, "LOGICAL", fldBOOL, fldUNKNOWN, 0, 0, 0, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 6 - MEMO 6, "MEMO", fldBLOB, fldstMEMO, 10, 0, 0, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 7 - OLE 7, "OLE", fldBLOB, fldstDBSOLEOBJ, 10, 0, 0, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 8 - BINARY 8, "BINARY", fldBLOB, fldstTYPEDBINARY, 10, 0, 0, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 9 - DBASELOCK 9, "DBASELOCK", fldLOCKINFO, fldUNKNOWN, 8, 0, 0, 0, 0, fldvNOCHECKS, fldrREADWRITE } }; // Array of field descriptors. // The number of fields in the table. static const unsigned uNumFields = sizeof(fldDesc) / sizeof (fldDesc[0]); //===================================================================== // Function: // CreateAndFillSampleDB(); // // Description: // This sample code will create a dBASE table, insert // 10 records into the table, then delete the table. // // Note: This example uses the new dBASE 5 table format. //===================================================================== void CreateAndFillSampleDB (void) { hDBIDb hDb; // Handle to the database hDBICur hCur; // Handle to the table CRTblDesc TblDesc; // Create table descriptor UINT16 uDispNumRecs = 10; // Number of records to add and // display DBIResult rslt; // Return value from IDAPI functions Screen("*** Create/Open/Fill dBASE Table 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(" Initializing the table descriptor..."); memset((void *) &TblDesc , 0, sizeof(CRTblDesc)); lstrcpy(TblDesc.szTblName, szTblName); lstrcpy(TblDesc.szTblType, szTblType); TblDesc.iFldCount = uNumFields; TblDesc.pfldDesc = fldDesc; Screen(" Creating the %s dBASE table...", szTblName); rslt = DbiCreateTable(hDb, TRUE, &TblDesc); if (ChkRslt(rslt, "CreateTable") != DBIERR_NONE) { Screen(" Make certain that the dBASE table level is set" " to '5' in IDAPI.CFG"); CloseDbAndExit(&hDb); Screen("\r\n*** End of Example ***"); return; } Screen(" Fill the table with random data..."); FillTable(hDb, (pCHAR) szTblName, (pCHAR) szTblType, uDispNumRecs); 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) { rslt = DbiDeleteTable(hDb, (pCHAR) szTblName, (pCHAR) szTblType); ChkRslt(rslt, "DeleteTable"); CloseDbAndExit(&hDb); Screen("\r\n*** End of Example ***"); return; } Screen(" Display the %s table we just created...", szTblName); DisplayTable(hCur, uDispNumRecs); Screen("\r\n Close the %s table...", szTblName); rslt = DbiCloseCursor(&hCur); ChkRslt(rslt, "CloseCursor"); Screen(" Deleting the %s table...", szTblName); rslt = DbiDeleteTable(hDb, (pCHAR) szTblName, (pCHAR) szTblType); ChkRslt(rslt, "DeleteTable"); Screen(" Close the database and exit IDAPI..."); CloseDbAndExit(&hDb); Screen("\r\n*** End of Example ***"); }