// BDE - (C) Copyright 1994 by Borland International #include "query.h" // The way to use this macro is to include the macro.h header // file where you want to use this function. Then pass an IDAPI // function as a parameter to the macro: // // #define DBIErr(parm) DBIError(__FILE__, __LINE__, \ // // #parm, parm) ; \ // // if ( GlobalDBIErr ) { \ // // return GlobalDBIErr ;} // // For Example: // DBIErr(DbiCreateTable(hDb, bOverWrite, &crTblDsc)) ; DBIResult GlobalDBIErr; static char szDBIStatus[DBIMAXMSGLEN+1]; static char szMessage[DBIMAXMSGLEN+1+110]; //==================================================================== // Name: DBIError(module, line, function, retVal); // // Input: module - Module name // line - Line number // function - Engine function name // retVal - Result code // // Return: A DBIResult value // // Description: // This is function that takes in the information of where // the error accured and displays that is a message box. // The information listed above explains how to use this // function inside of a macro. //==================================================================== DBIResult DBIError (pCHAR module, UINT16 line, pCHAR function, DBIResult retVal) { if (retVal == DBIERR_NONE) { GlobalDBIErr = DBIERR_NONE; return retVal; } if (retVal != DBIERR_CANTFINDODAPI) { DbiGetErrorString(retVal, szDBIStatus); // Get the error message sprintf(szMessage, "Module:\t\t%s\nFunction:\t%s\nLine:\t\t%d\n" "Category:\t%d\nCode:\t\t%d\nError:\t\t%s\n", module, function, line, ErrCat(retVal), ErrCode(retVal), szDBIStatus); MessageBox(NULL, szMessage, "IDAPI Error", MB_ICONEXCLAMATION); } else { MessageBox(NULL, "Cannot find IDAPI files: Check WIN.INI for" "an [IDAPI] section.", "IDAPI Initialization Error", MB_ICONHAND | MB_OK); } GlobalDBIErr = retVal; return retVal; }