// BDE - (C) Copyright 1995 by Borland International // cr8txtbl.c #include "snipit.h" static const char szTblName[] = "texttbl"; static const char szTblType[] = szASCII; // Field descriptor used in creating a table. // Note that you have to use physical field descriptors static SNIPFAR FLDDesc fldDesc[] = { { // Field 1 - CHARACTER 1, // Field number "CHARACTER", // Field name fldASCCHAR, // Field type fldUNKNOWN, // Field subtype 10, // Field size ( 1 or 0, except // BLOB, CHAR fields, Text FLOAT, // NUMERIC fields ) 0, // Decimal places ( 0 ) // computed 0, // Offset in record ( 0 ) 0, // Length in bytes ( 0 ) 0, // Null offset ( 0 ) fldvNOCHECKS, // Validity checks ( 0 ) fldrREADWRITE // Rights }, { // Field 2 - SHORT 2, "NUMERIC", fldASCNUM, fldUNKNOWN, 4, 0, 10, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 3 - DATE 3, "DATE", fldASCDATE, fldUNKNOWN, 10, 0, 14, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 4 - LOGICAL 4, "LOGICAL", fldASCBOOL, fldUNKNOWN, 2, 0, 24, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 5 - TIME 5, "TIME", fldASCTIME, fldUNKNOWN, 8, 0, 26, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 6 - TIMESTAMP 6, "TIMESTAMP", fldASCTIMESTAMP, fldUNKNOWN, 20, 0, 34, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 7 - LONG 7, "LONG", fldASCLONG, fldUNKNOWN, 4, 0, 54, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 8 - FLOAT 8, "FLOAT", fldASCFLOAT, fldUNKNOWN, 8, 2, 58, 0, 0, fldvNOCHECKS, fldrREADWRITE }, { // Field 9 - MONEY 9, "MONEY", fldASCMONEY, fldstMONEY, 8, 2, 66, 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: // CreateAndFillSampleTXT(); // // Description: // This sample code will create a text table, insert // 10 records into the table, then delete the table. // // Note that the fields of a text table are set using the // DbiSetFieldMap function. It is required that the field // descriptor used when setting the fields of a text table // contains the physical field types. //===================================================================== void CreateAndFillSampleTXT (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 Text 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(" Force the use of a schema file for the text table..."); rslt = DbiSetProp(hDb, dbUSESCHEMAFILE, (UINT32)TRUE); ChkRslt(rslt, "SetProp"); 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 text table..."); rslt = DbiCreateTable(hDb, TRUE, &TblDesc); if (ChkRslt(rslt, "CreateTable") != DBIERR_NONE) { CloseDbAndExit(&hDb); Screen("\r\n*** End of Example ***"); return; } Screen(" Fill the table with Random Data..."); FillTable(hDb, (pCHAR)szTblName, "ASCIIDRV", uDispNumRecs); Screen(" Open the %s table....", szTblName); rslt = DbiOpenTable(hDb, (pCHAR)szTblName, "ASCIIDRV", NULL, NULL, 0, dbiREADWRITE, dbiOPENSHARED, xltFIELD, FALSE, NULL, &hCur); if (ChkRslt(rslt, "OpenTable") != DBIERR_NONE) { 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(" Close the database and exit IDAPI..."); CloseDbAndExit(&hDb); Screen("\r\n*** End of Example ***"); }