From: George Tasker Date: Tue, 28 Dec 2004 21:10:12 +0000 (+0000) Subject: Non-standard abbreviations of words in function/variable names changed to standard... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b803274045e166c45d16f1d10c3e563b97685b74?ds=inline Non-standard abbreviations of words in function/variable names changed to standard abbreviations or the entire word (e.g. colNo is now colNum) If SetColDef is called with an out of range index, the function in debug will throw an assert msg, and call wxLogDebug(), and then return without doing anything. The function now returns a boolean to indicate if the column definition was successfully created or not git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/dbtable.h b/include/wx/dbtable.h index a09f6fe2cf..36e94cb5fd 100644 --- a/include/wx/dbtable.h +++ b/include/wx/dbtable.h @@ -139,7 +139,7 @@ private: wxString tablePath; // needed for dBase tables wxString tableName; // Table name wxString queryTableName; // Query Table Name - UWORD noCols; // # of columns in the table + UWORD m_numCols; // # of columns in the table bool queryOnly; // Query Only, no inserts, updates or deletes // Column Definitions @@ -173,7 +173,7 @@ public: char tablePath[wxDB_PATH_MAX]; // needed for dBase tables char tableName[DB_MAX_TABLE_NAME_LEN+1]; // Table name char queryTableName[DB_MAX_TABLE_NAME_LEN+1]; // Query Table Name - UWORD noCols; // # of columns in the table + UWORD m_numCols; // # of columns in the table bool queryOnly; // Query Only, no inserts, updates or deletes // Column Definitions @@ -211,7 +211,7 @@ public: const wxString &GetQueryTableName() { return queryTableName; } const wxString &GetTablePath() { return tablePath; } - UWORD GetNumberOfColumns() { return noCols; } // number of "defined" columns for this wxDbTable instance + UWORD GetNumberOfColumns() { return m_numCols; } // number of "defined" columns for this wxDbTable instance const wxString &GetFromClause() { return from; } const wxString &GetOrderByClause() { return orderBy; } @@ -284,13 +284,16 @@ public: { BuildWhereClause(pWhereClause,typeOfWhere,qualTableName,useLikeComparison); } #endif bool CanSelectForUpdate(void); - bool CanUpdByROWID(void); - void ClearMemberVar(UWORD colNo, bool setToNull=false); +#if wxODBC_BACKWARD_COMPATABILITY + bool CanUpdByROWID(void) { return CanUpdateByRowID(); }; +#endif + bool CanUpdateByROWID(void); + void ClearMemberVar(UWORD colNumber, bool setToNull=false); void ClearMemberVars(bool setToNull=false); bool SetQueryTimeout(UDWORD nSeconds); wxDbColDef *GetColDefs() { return colDefs; } - void SetColDefs(UWORD index, const wxString &fieldName, int dataType, + bool SetColDefs(UWORD index, const wxString &fieldName, int dataType, void *pData, SWORD cType, int size, bool keyField = false, bool upd = true, bool insAllow = true, bool derivedCol = false); @@ -309,12 +312,12 @@ public: ULONG Count(const wxString &args=_T("*")); int DB_STATUS(void) { return(pDb->DB_STATUS); } - bool IsColNull(UWORD colNo) const; - bool SetColNull(UWORD colNo, bool set=true); + bool IsColNull(UWORD colNumber) const; + bool SetColNull(UWORD colNumber, bool set=true); bool SetColNull(const wxString &colName, bool set=true); #if wxODBC_BACKWARD_COMPATABILITY // The following member functions are deprecated. You should use the SetColNull() - bool SetNull(int colNo, bool set=true) { return (SetNull(colNo,set)); } + bool SetNull(int colNumber, bool set=true) { return (SetNull(colNumber,set)); } bool SetNull(const char *colName, bool set=true) { return (SetNull(colName,set)); } #endif #ifdef __WXDEBUG__ @@ -324,8 +327,12 @@ public: //TODO: Need to Document typedef enum { WX_ROW_MODE_QUERY , WX_ROW_MODE_INDIVIDUAL } rowmode_t; virtual void SetRowMode(const rowmode_t rowmode); - virtual wxVariant GetCol(const int colNo) const ; - virtual void SetCol(const int colNo, const wxVariant value); +#if wxODBC_BACKWARD_COMPATABILITY + virtual wxVariant GetCol(const int colNumber) const { return GetColumn(colNumber); }; + virtual void SetCol(const int colNumber, const wxVariant value) { return SetColumn(colNumber, value); }; +#endif + virtual wxVariant GetColumn(const int colNumber) const ; + virtual void SetColumn(const int colNumber, const wxVariant value); virtual GenericKey GetKey(void); virtual void SetKey(const GenericKey &key); diff --git a/src/common/dbgrid.cpp b/src/common/dbgrid.cpp index ed58753424..af7ae488dc 100644 --- a/src/common/dbgrid.cpp +++ b/src/common/dbgrid.cpp @@ -448,7 +448,7 @@ long wxDbGridTableBase::GetValueAsLong(int row, int col) (sqltype == SQL_C_SLONG) || (sqltype == SQL_C_ULONG)) { - wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol); + wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol); return val.GetLong(); } wxFAIL_MSG (_T("unknown column, ")); @@ -473,7 +473,7 @@ double wxDbGridTableBase::GetValueAsDouble(int row, int col) (sqltype == SQL_C_FLOAT) || (sqltype == SQL_C_DOUBLE)) { - wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol); + wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol); return val.GetDouble(); } wxFAIL_MSG (_T("unknown column")); @@ -496,7 +496,7 @@ bool wxDbGridTableBase::GetValueAsBool(int row, int col) (sqltype == SQL_C_SLONG) || (sqltype == SQL_C_ULONG)) { - wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol); + wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol); return val.GetBool(); } wxFAIL_MSG (_T("unknown column, ")); @@ -525,7 +525,7 @@ void* wxDbGridTableBase::GetValueAsCustom(int row, int col, const wxString& type (sqltype == SQL_C_TIME) || (sqltype == SQL_C_TIMESTAMP)) { - wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol); + wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol); return new wxDateTime(val.GetDateTime()); } } @@ -562,7 +562,7 @@ void wxDbGridTableBase::SetValueAsCustom(int row, int col, const wxString& typeN } wxVariant val(date); m_rowmodified = true; - m_data->SetCol(m_ColInfo[col].DbCol,val); + m_data->SetColumn(m_ColInfo[col].DbCol,val); } } wxFAIL_MSG (_T("unknown column data type")); @@ -594,7 +594,7 @@ wxString wxDbGridTableBase::GetValue(int row, int col) wxLogDebug(wxT("GetValue() on %i,%i"),row,col); ValidateRow(row); - wxVariant val = m_data->GetCol(m_ColInfo[col].DbCol); + wxVariant val = m_data->GetColumn(m_ColInfo[col].DbCol); wxLogDebug(wxT("\tReturning \"%s\"\n"),val.GetString().c_str()); return val.GetString(); @@ -609,7 +609,7 @@ void wxDbGridTableBase::SetValue(int row, int col,const wxString& value) wxVariant val(value); m_rowmodified = true; - m_data->SetCol(m_ColInfo[col].DbCol,val); + m_data->SetColumn(m_ColInfo[col].DbCol,val); } @@ -621,7 +621,7 @@ void wxDbGridTableBase::SetValueAsLong(int row, int col, long value) wxVariant val(value); m_rowmodified = true; - m_data->SetCol(m_ColInfo[col].DbCol,val); + m_data->SetColumn(m_ColInfo[col].DbCol,val); } @@ -633,7 +633,7 @@ void wxDbGridTableBase::SetValueAsDouble(int row, int col, double value) wxVariant val(value); m_rowmodified = true; - m_data->SetCol(m_ColInfo[col].DbCol,val); + m_data->SetColumn(m_ColInfo[col].DbCol,val); } @@ -646,7 +646,7 @@ void wxDbGridTableBase::SetValueAsBool(int row, int col, bool value) wxVariant val(value); m_rowmodified = true; - m_data->SetCol(m_ColInfo[col].DbCol,val); + m_data->SetColumn(m_ColInfo[col].DbCol,val); } diff --git a/src/common/dbtable.cpp b/src/common/dbtable.cpp index 013b9094ef..1eb798fec3 100644 --- a/src/common/dbtable.cpp +++ b/src/common/dbtable.cpp @@ -152,7 +152,7 @@ bool wxDbTable::initialize(wxDb *pwxDb, const wxString &tblName, const UWORD num hstmtInternal = 0; colDefs = 0; tableID = 0; - noCols = numColumns; // Number of cols in the table + m_numCols = numColumns; // Number of columns in the table where.Empty(); // Where clause orderBy.Empty(); // Order By clause from.Empty(); // From clause @@ -212,8 +212,8 @@ bool wxDbTable::initialize(wxDb *pwxDb, const wxString &tblName, const UWORD num hdbc = pDb->GetHDBC(); // Allocate space for column definitions - if (noCols) - colDefs = new wxDbColDef[noCols]; // Points to the first column definition + if (m_numCols) + colDefs = new wxDbColDef[m_numCols]; // Points to the first column definition // Allocate statement handles for the table if (!queryOnly) @@ -466,9 +466,9 @@ bool wxDbTable::bindParams(bool forUpdate) // Bind each column of the table that should be bound // to a parameter marker int i; - UWORD colNo; + UWORD colNumber; - for (i=0, colNo=1; i < noCols; i++) + for (i=0, colNumber=1; i < m_numCols; i++) { if (forUpdate) { @@ -519,7 +519,7 @@ bool wxDbTable::bindParams(bool forUpdate) if (forUpdate) { - if (SQLBindParameter(hstmtUpdate, colNo++, SQL_PARAM_INPUT, colDefs[i].SqlCtype, + if (SQLBindParameter(hstmtUpdate, colNumber++, SQL_PARAM_INPUT, colDefs[i].SqlCtype, fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj, precision+1, &colDefs[i].CbValue) != SQL_SUCCESS) { @@ -528,7 +528,7 @@ bool wxDbTable::bindParams(bool forUpdate) } else { - if (SQLBindParameter(hstmtInsert, colNo++, SQL_PARAM_INPUT, colDefs[i].SqlCtype, + if (SQLBindParameter(hstmtInsert, colNumber++, SQL_PARAM_INPUT, colDefs[i].SqlCtype, fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj, precision+1, &colDefs[i].CbValue) != SQL_SUCCESS) { @@ -564,7 +564,7 @@ bool wxDbTable::bindCols(HSTMT cursor) // Bind each column of the table to a memory address for fetching data UWORD i; - for (i = 0; i < noCols; i++) + for (i = 0; i < m_numCols; i++) { cb = colDefs[i].CbValue; if (SQLBindCol(cursor, (UWORD)(i+1), colDefs[i].SqlCtype, (UCHAR*) colDefs[i].PtrDataObj, @@ -602,7 +602,7 @@ bool wxDbTable::getRec(UWORD fetchType) // Set the Null member variable to indicate the Null state // of each column just read in. int i; - for (i = 0; i < noCols; i++) + for (i = 0; i < m_numCols; i++) colDefs[i].Null = (colDefs[i].CbValue == SQL_NULL_DATA); } } @@ -622,7 +622,7 @@ bool wxDbTable::getRec(UWORD fetchType) // Set the Null member variable to indicate the Null state // of each column just read in. int i; - for (i = 0; i < noCols; i++) + for (i = 0; i < m_numCols; i++) colDefs[i].Null = (colDefs[i].CbValue == SQL_NULL_DATA); } } @@ -678,7 +678,7 @@ bool wxDbTable::execUpdate(const wxString &pSqlStmt) { // Find the parameter int i; - for (i=0; i < noCols; i++) + for (i=0; i < m_numCols; i++) { if (colDefs[i].PtrDataObj == pParmID) { @@ -760,7 +760,7 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) // Calculate the maximum size of the concatenated // keys for use with wxDbGrid m_keysize = 0; - for (i=0; i < noCols; i++) + for (i=0; i < m_numCols; i++) { if (colDefs[i].KeyField) { @@ -829,12 +829,12 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) */ // Build an insert statement using parameter markers - if (!queryOnly && noCols > 0) + if (!queryOnly && m_numCols > 0) { bool needComma = false; sqlStmt.Printf(wxT("INSERT INTO %s ("), pDb->SQLTableName(tableName.c_str()).c_str()); - for (i = 0; i < noCols; i++) + for (i = 0; i < m_numCols; i++) { if (! colDefs[i].InsertAllowed) continue; @@ -849,7 +849,7 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists) int insertableCount = 0; - for (i = 0; i < noCols; i++) + for (i = 0; i < m_numCols; i++) { if (! colDefs[i].InsertAllowed) continue; @@ -1000,7 +1000,7 @@ void wxDbTable::BuildDeleteStmt(wxString &pSqlStmt, int typeOfDel, const wxStrin // If the datasource supports the ROWID column, build // the where on ROWID for efficiency purposes. // e.g. DELETE FROM PARTS WHERE ROWID = '111.222.333' - if (CanUpdByROWID()) + if (CanUpdateByROWID()) { SDWORD cb; wxChar rowid[wxDB_ROWID_LEN+1]; @@ -1008,7 +1008,7 @@ void wxDbTable::BuildDeleteStmt(wxString &pSqlStmt, int typeOfDel, const wxStrin // Get the ROWID value. If not successful retreiving the ROWID, // simply fall down through the code and build the WHERE clause // based on the key fields. - if (SQLGetData(hstmt, (UWORD)(noCols+1), SQL_C_WXCHAR, (UCHAR*) rowid, sizeof(rowid), &cb) == SQL_SUCCESS) + if (SQLGetData(hstmt, (UWORD)(m_numCols+1), SQL_C_WXCHAR, (UCHAR*) rowid, sizeof(rowid), &cb) == SQL_SUCCESS) { pSqlStmt += wxT("ROWID = '"); pSqlStmt += rowid; @@ -1069,7 +1069,7 @@ void wxDbTable::BuildSelectStmt(wxString &pSqlStmt, int typeOfSelect, bool disti // Add the column list int i; wxString tStr; - for (i = 0; i < noCols; i++) + for (i = 0; i < m_numCols; i++) { tStr = colDefs[i].ColName; // If joining tables, the base table column names must be qualified to avoid ambiguity @@ -1079,13 +1079,13 @@ void wxDbTable::BuildSelectStmt(wxString &pSqlStmt, int typeOfSelect, bool disti pSqlStmt += wxT("."); } pSqlStmt += pDb->SQLColumnName(colDefs[i].ColName); - if (i + 1 < noCols) + if (i + 1 < m_numCols) pSqlStmt += wxT(","); } // If the datasource supports ROWID, get this column as well. Exception: Don't retrieve // the ROWID if querying distinct records. The rowid will always be unique. - if (!distinct && CanUpdByROWID()) + if (!distinct && CanUpdateByROWID()) { // If joining tables, the base table column names must be qualified to avoid ambiguity if (appendFromClause || pDb->Dbms() == dbmsACCESS) @@ -1194,7 +1194,7 @@ void wxDbTable::BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpd, const wxStrin // Append a list of columns to be updated int i; - for (i = 0; i < noCols; i++) + for (i = 0; i < m_numCols; i++) { // Only append Updateable columns if (colDefs[i].Updateable) @@ -1218,7 +1218,7 @@ void wxDbTable::BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpd, const wxStrin // If the datasource supports the ROWID column, build // the where on ROWID for efficiency purposes. // e.g. UPDATE PARTS SET Col1 = ?, Col2 = ? WHERE ROWID = '111.222.333' - if (CanUpdByROWID()) + if (CanUpdateByROWID()) { SDWORD cb; wxChar rowid[wxDB_ROWID_LEN+1]; @@ -1226,7 +1226,7 @@ void wxDbTable::BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpd, const wxStrin // Get the ROWID value. If not successful retreiving the ROWID, // simply fall down through the code and build the WHERE clause // based on the key fields. - if (SQLGetData(hstmt, (UWORD)(noCols+1), SQL_C_WXCHAR, (UCHAR*) rowid, sizeof(rowid), &cb) == SQL_SUCCESS) + if (SQLGetData(hstmt, (UWORD)(m_numCols+1), SQL_C_WXCHAR, (UCHAR*) rowid, sizeof(rowid), &cb) == SQL_SUCCESS) { pSqlStmt += wxT("ROWID = '"); pSqlStmt += rowid; @@ -1267,15 +1267,15 @@ void wxDbTable::BuildWhereClause(wxString &pWhereClause, int typeOfWhere, wxString colValue; // Loop through the columns building a where clause as you go - int colNo; - for (colNo = 0; colNo < noCols; colNo++) + int colNumber; + for (colNumber = 0; colNumber < m_numCols; colNumber++) { // Determine if this column should be included in the WHERE clause - if ((typeOfWhere == DB_WHERE_KEYFIELDS && colDefs[colNo].KeyField) || - (typeOfWhere == DB_WHERE_MATCHING && (!IsColNull((UWORD)colNo)))) + if ((typeOfWhere == DB_WHERE_KEYFIELDS && colDefs[colNumber].KeyField) || + (typeOfWhere == DB_WHERE_MATCHING && (!IsColNull((UWORD)colNumber)))) { // Skip over timestamp columns - if (colDefs[colNo].SqlCtype == SQL_C_TIMESTAMP) + if (colDefs[colNumber].SqlCtype == SQL_C_TIMESTAMP) continue; // If there is more than 1 column, join them with the keyword "AND" if (moreThanOneColumn) @@ -1284,54 +1284,54 @@ void wxDbTable::BuildWhereClause(wxString &pWhereClause, int typeOfWhere, moreThanOneColumn = true; // Concatenate where phrase for the column - wxString tStr = colDefs[colNo].ColName; + wxString tStr = colDefs[colNumber].ColName; if (qualTableName.Length() && tStr.Find(wxT('.')) == wxNOT_FOUND) { pWhereClause += pDb->SQLTableName(qualTableName); pWhereClause += wxT("."); } - pWhereClause += pDb->SQLColumnName(colDefs[colNo].ColName); + pWhereClause += pDb->SQLColumnName(colDefs[colNumber].ColName); - if (useLikeComparison && (colDefs[colNo].SqlCtype == SQL_C_WXCHAR)) + if (useLikeComparison && (colDefs[colNumber].SqlCtype == SQL_C_WXCHAR)) pWhereClause += wxT(" LIKE "); else pWhereClause += wxT(" = "); - switch(colDefs[colNo].SqlCtype) + switch(colDefs[colNumber].SqlCtype) { case SQL_C_CHAR: #ifndef __UNIX__ case SQL_C_WCHAR: #endif //case SQL_C_WXCHAR: SQL_C_WXCHAR is covered by either SQL_C_CHAR or SQL_C_WCHAR - colValue.Printf(wxT("'%s'"), (UCHAR FAR *) colDefs[colNo].PtrDataObj); + colValue.Printf(wxT("'%s'"), (UCHAR FAR *) colDefs[colNumber].PtrDataObj); break; case SQL_C_SHORT: case SQL_C_SSHORT: - colValue.Printf(wxT("%hi"), *((SWORD *) colDefs[colNo].PtrDataObj)); + colValue.Printf(wxT("%hi"), *((SWORD *) colDefs[colNumber].PtrDataObj)); break; case SQL_C_USHORT: - colValue.Printf(wxT("%hu"), *((UWORD *) colDefs[colNo].PtrDataObj)); + colValue.Printf(wxT("%hu"), *((UWORD *) colDefs[colNumber].PtrDataObj)); break; case SQL_C_LONG: case SQL_C_SLONG: - colValue.Printf(wxT("%li"), *((SDWORD *) colDefs[colNo].PtrDataObj)); + colValue.Printf(wxT("%li"), *((SDWORD *) colDefs[colNumber].PtrDataObj)); break; case SQL_C_ULONG: - colValue.Printf(wxT("%lu"), *((UDWORD *) colDefs[colNo].PtrDataObj)); + colValue.Printf(wxT("%lu"), *((UDWORD *) colDefs[colNumber].PtrDataObj)); break; case SQL_C_FLOAT: - colValue.Printf(wxT("%.6f"), *((SFLOAT *) colDefs[colNo].PtrDataObj)); + colValue.Printf(wxT("%.6f"), *((SFLOAT *) colDefs[colNumber].PtrDataObj)); break; case SQL_C_DOUBLE: - colValue.Printf(wxT("%.6f"), *((SDOUBLE *) colDefs[colNo].PtrDataObj)); + colValue.Printf(wxT("%.6f"), *((SDOUBLE *) colDefs[colNumber].PtrDataObj)); break; default: { wxString strMsg; strMsg.Printf(wxT("wxDbTable::bindParams(): Unknown column type for colDefs %d colName %s"), - colNo,colDefs[colNo].ColName); + colNumber,colDefs[colNumber].ColName); wxFAIL_MSG(strMsg.c_str()); } break; @@ -1400,7 +1400,7 @@ bool wxDbTable::CreateTable(bool attemptDrop) // Create the table #ifdef DBDEBUG_CONSOLE - for (i = 0; i < noCols; i++) + for (i = 0; i < m_numCols; i++) { // Exclude derived columns since they are NOT part of the base table if (colDefs[i].DerivedCol) @@ -1434,7 +1434,7 @@ bool wxDbTable::CreateTable(bool attemptDrop) sqlStmt.Printf(wxT("CREATE TABLE %s ("), pDb->SQLTableName(tableName.c_str()).c_str()); - for (i = 0; i < noCols; i++) + for (i = 0; i < m_numCols; i++) { // Exclude derived columns since they are NOT part of the base table if (colDefs[i].DerivedCol) @@ -1491,7 +1491,7 @@ bool wxDbTable::CreateTable(bool attemptDrop) needComma = true; } // If there is a primary key defined, include it in the create statement - for (i = j = 0; i < noCols; i++) + for (i = j = 0; i < m_numCols; i++) { if (colDefs[i].KeyField) { @@ -1535,7 +1535,7 @@ bool wxDbTable::CreateTable(bool attemptDrop) } // List column name(s) of column(s) comprising the primary key - for (i = j = 0; i < noCols; i++) + for (i = j = 0; i < m_numCols; i++) { if (colDefs[i].KeyField) { @@ -1678,7 +1678,7 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol // index column name. We need to do this to get the DB_DATA_TYPE of // the index column, as MySQL's syntax for the ALTER column requires // this information - while (!found && (j < this->noCols)) + while (!found && (j < this->m_numCols)) { if (wxStrcmp(colDefs[j].ColName,pIdxDefs[i].ColName) == 0) found = true; @@ -1741,7 +1741,7 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol { // Find the details on this column int j; - for ( j = 0; j < noCols; ++j ) + for ( j = 0; j < m_numCols; ++j ) { if ( wxStrcmp( pIdxDefs[i].ColName, colDefs[j].ColName ) == 0 ) { @@ -1874,30 +1874,30 @@ bool wxDbTable::DropIndex(const wxString &idxName) /********** wxDbTable::SetOrderByColNums() **********/ bool wxDbTable::SetOrderByColNums(UWORD first, ... ) { - int colNo = first; // using 'int' to be able to look for wxDB_NO_MORE_COLUN_NUMBERS + int colNumber = first; // using 'int' to be able to look for wxDB_NO_MORE_COLUN_NUMBERS va_list argptr; bool abort = false; wxString tempStr; va_start(argptr, first); /* Initialize variable arguments. */ - while (!abort && (colNo != wxDB_NO_MORE_COLUMN_NUMBERS)) + while (!abort && (colNumber != wxDB_NO_MORE_COLUMN_NUMBERS)) { // Make sure the passed in column number // is within the valid range of columns // - // Valid columns are 0 thru noCols-1 - if (colNo >= noCols || colNo < 0) + // Valid columns are 0 thru m_numCols-1 + if (colNumber >= m_numCols || colNumber < 0) { abort = true; continue; } - if (colNo != first) + if (colNumber != first) tempStr += wxT(","); - tempStr += colDefs[colNo].ColName; - colNo = va_arg (argptr, int); + tempStr += colDefs[colNumber].ColName; + colNumber = va_arg (argptr, int); } va_end (argptr); /* Reset variable arguments. */ @@ -1941,7 +1941,7 @@ int wxDbTable::Insert(void) { // Find the parameter int i; - for (i=0; i < noCols; i++) + for (i=0; i < m_numCols; i++) { if (colDefs[i].PtrDataObj == pParmID) { @@ -2100,33 +2100,33 @@ bool wxDbTable::DeleteMatching(void) /********** wxDbTable::IsColNull() **********/ -bool wxDbTable::IsColNull(UWORD colNo) const +bool wxDbTable::IsColNull(UWORD colNumber) const { /* This logic is just not right. It would indicate true if a numeric field were set to a value of 0. - switch(colDefs[colNo].SqlCtype) + switch(colDefs[colNumber].SqlCtype) { case SQL_C_CHAR: case SQL_C_WCHAR: //case SQL_C_WXCHAR: SQL_C_WXCHAR is covered by either SQL_C_CHAR or SQL_C_WCHAR - return(((UCHAR FAR *) colDefs[colNo].PtrDataObj)[0] == 0); + return(((UCHAR FAR *) colDefs[colNumber].PtrDataObj)[0] == 0); case SQL_C_SSHORT: - return(( *((SWORD *) colDefs[colNo].PtrDataObj)) == 0); + return(( *((SWORD *) colDefs[colNumber].PtrDataObj)) == 0); case SQL_C_USHORT: - return(( *((UWORD*) colDefs[colNo].PtrDataObj)) == 0); + return(( *((UWORD*) colDefs[colNumber].PtrDataObj)) == 0); case SQL_C_SLONG: - return(( *((SDWORD *) colDefs[colNo].PtrDataObj)) == 0); + return(( *((SDWORD *) colDefs[colNumber].PtrDataObj)) == 0); case SQL_C_ULONG: - return(( *((UDWORD *) colDefs[colNo].PtrDataObj)) == 0); + return(( *((UDWORD *) colDefs[colNumber].PtrDataObj)) == 0); case SQL_C_FLOAT: - return(( *((SFLOAT *) colDefs[colNo].PtrDataObj)) == 0); + return(( *((SFLOAT *) colDefs[colNumber].PtrDataObj)) == 0); case SQL_C_DOUBLE: - return((*((SDOUBLE *) colDefs[colNo].PtrDataObj)) == 0); + return((*((SDOUBLE *) colDefs[colNumber].PtrDataObj)) == 0); case SQL_C_TIMESTAMP: TIMESTAMP_STRUCT *pDt; - pDt = (TIMESTAMP_STRUCT *) colDefs[colNo].PtrDataObj; + pDt = (TIMESTAMP_STRUCT *) colDefs[colNumber].PtrDataObj; if (pDt->year == 0 && pDt->month == 0 && pDt->day == 0) return true; else @@ -2135,7 +2135,7 @@ bool wxDbTable::IsColNull(UWORD colNo) const return true; } */ - return (colDefs[colNo].Null); + return (colDefs[colNumber].Null); } // wxDbTable::IsColNull() @@ -2157,8 +2157,8 @@ bool wxDbTable::CanSelectForUpdate(void) } // wxDbTable::CanSelectForUpdate() -/********** wxDbTable::CanUpdByROWID() **********/ -bool wxDbTable::CanUpdByROWID(void) +/********** wxDbTable::CanUpdateByROWID() **********/ +bool wxDbTable::CanUpdateByROWID(void) { /* * NOTE: Returning false for now until this can be debugged, @@ -2171,7 +2171,7 @@ bool wxDbTable::CanUpdByROWID(void) else return false; */ -} // wxDbTable::CanUpdByROWID() +} // wxDbTable::CanUpdateByROWID() /********** wxDbTable::IsCursorClosedOnCommit() **********/ @@ -2187,41 +2187,41 @@ bool wxDbTable::IsCursorClosedOnCommit(void) /********** wxDbTable::ClearMemberVar() **********/ -void wxDbTable::ClearMemberVar(UWORD colNo, bool setToNull) +void wxDbTable::ClearMemberVar(UWORD colNumber, bool setToNull) { - wxASSERT(colNo < noCols); + wxASSERT(colNumber < m_numCols); - switch(colDefs[colNo].SqlCtype) + switch(colDefs[colNumber].SqlCtype) { case SQL_C_CHAR: #ifndef __UNIX__ case SQL_C_WCHAR: #endif //case SQL_C_WXCHAR: SQL_C_WXCHAR is covered by either SQL_C_CHAR or SQL_C_WCHAR - ((UCHAR FAR *) colDefs[colNo].PtrDataObj)[0] = 0; + ((UCHAR FAR *) colDefs[colNumber].PtrDataObj)[0] = 0; break; case SQL_C_SSHORT: - *((SWORD *) colDefs[colNo].PtrDataObj) = 0; + *((SWORD *) colDefs[colNumber].PtrDataObj) = 0; break; case SQL_C_USHORT: - *((UWORD*) colDefs[colNo].PtrDataObj) = 0; + *((UWORD*) colDefs[colNumber].PtrDataObj) = 0; break; case SQL_C_LONG: case SQL_C_SLONG: - *((SDWORD *) colDefs[colNo].PtrDataObj) = 0; + *((SDWORD *) colDefs[colNumber].PtrDataObj) = 0; break; case SQL_C_ULONG: - *((UDWORD *) colDefs[colNo].PtrDataObj) = 0; + *((UDWORD *) colDefs[colNumber].PtrDataObj) = 0; break; case SQL_C_FLOAT: - *((SFLOAT *) colDefs[colNo].PtrDataObj) = 0.0f; + *((SFLOAT *) colDefs[colNumber].PtrDataObj) = 0.0f; break; case SQL_C_DOUBLE: - *((SDOUBLE *) colDefs[colNo].PtrDataObj) = 0.0f; + *((SDOUBLE *) colDefs[colNumber].PtrDataObj) = 0.0f; break; case SQL_C_TIMESTAMP: TIMESTAMP_STRUCT *pDt; - pDt = (TIMESTAMP_STRUCT *) colDefs[colNo].PtrDataObj; + pDt = (TIMESTAMP_STRUCT *) colDefs[colNumber].PtrDataObj; pDt->year = 0; pDt->month = 0; pDt->day = 0; @@ -2233,7 +2233,7 @@ void wxDbTable::ClearMemberVar(UWORD colNo, bool setToNull) } if (setToNull) - SetColNull(colNo); + SetColNull(colNumber); } // wxDbTable::ClearMemberVar() @@ -2243,7 +2243,7 @@ void wxDbTable::ClearMemberVars(bool setToNull) int i; // Loop through the columns setting each member variable to zero - for (i=0; i < noCols; i++) + for (i=0; i < m_numCols; i++) ClearMemberVar((UWORD)i,setToNull); } // wxDbTable::ClearMemberVars() @@ -2268,27 +2268,32 @@ bool wxDbTable::SetQueryTimeout(UDWORD nSeconds) /********** wxDbTable::SetColDefs() **********/ -void wxDbTable::SetColDefs(UWORD index, const wxString &fieldName, int dataType, void *pData, - SWORD cType, int size, bool keyField, bool upd, +bool wxDbTable::SetColDefs(UWORD index, const wxString &fieldName, int dataType, void *pData, + SWORD cType, int size, bool keyField, bool updateable, bool insAllow, bool derivedCol) { - wxASSERT_MSG( index < noCols, - _T("Specified column index exceeds the maximum number of columns for this table.") ); + wxString tmpStr; + + if (index >= m_numCols) // Columns numbers are zero based.... + { + tmpStr.Printf(wxT("Specified column index (%d) exceeds the maximum number of columns (%d) registered for this table definition. Column definition not added."), index, m_numCols); + wxFAIL_MSG(tmpStr); + wxLogDebug(tmpStr); + return false; + } if (!colDefs) // May happen if the database connection fails - return; + return false; if (fieldName.Length() > (unsigned int) DB_MAX_COLUMN_NAME_LEN) { wxStrncpy(colDefs[index].ColName, fieldName, DB_MAX_COLUMN_NAME_LEN); - colDefs[index].ColName[DB_MAX_COLUMN_NAME_LEN] = 0; + colDefs[index].ColName[DB_MAX_COLUMN_NAME_LEN] = 0; // Prevent buffer overrun -#ifdef __WXDEBUG__ - wxString tmpMsg; - tmpMsg.Printf(_T("Column name '%s' is too long. Truncated to '%s'."), + tmpStr.Printf(wxT("Column name '%s' is too long. Truncated to '%s'."), fieldName.c_str(),colDefs[index].ColName); - wxFAIL_MSG(tmpMsg); -#endif // __WXDEBUG__ + wxFAIL_MSG(tmpStr); + wxLogDebug(tmpStr); } else wxStrcpy(colDefs[index].ColName, fieldName); @@ -2307,12 +2312,14 @@ void wxDbTable::SetColDefs(UWORD index, const wxString &fieldName, int dataType, } else { - colDefs[index].Updateable = upd; + colDefs[index].Updateable = updateable; colDefs[index].InsertAllowed = insAllow; } colDefs[index].Null = false; + return true; + } // wxDbTable::SetColDefs() @@ -2505,7 +2512,7 @@ bool wxDbTable::Refresh(void) wxString whereClause; whereClause.Empty(); - if (CanUpdByROWID()) + if (CanUpdateByROWID()) { SDWORD cb; wxChar rowid[wxDB_ROWID_LEN+1]; @@ -2513,7 +2520,7 @@ bool wxDbTable::Refresh(void) // Get the ROWID value. If not successful retreiving the ROWID, // simply fall down through the code and build the WHERE clause // based on the key fields. - if (SQLGetData(hstmt, (UWORD)(noCols+1), SQL_C_WXCHAR, (UCHAR*) rowid, sizeof(rowid), &cb) == SQL_SUCCESS) + if (SQLGetData(hstmt, (UWORD)(m_numCols+1), SQL_C_WXCHAR, (UCHAR*) rowid, sizeof(rowid), &cb) == SQL_SUCCESS) { whereClause += pDb->SQLTableName(queryTableName); // whereClause += queryTableName; @@ -2553,15 +2560,15 @@ bool wxDbTable::Refresh(void) /********** wxDbTable::SetColNull() **********/ -bool wxDbTable::SetColNull(UWORD colNo, bool set) +bool wxDbTable::SetColNull(UWORD colNumber, bool set) { - if (colNo < noCols) + if (colNumber < m_numCols) { - colDefs[colNo].Null = set; + colDefs[colNumber].Null = set; if (set) // Blank out the values in the member variable - ClearMemberVar(colNo, false); // Must call with false here, or infinite recursion will happen + ClearMemberVar(colNumber, false); // Must call with false here, or infinite recursion will happen - setCbValueForColumn(colNo); + setCbValueForColumn(colNumber); return true; } @@ -2574,20 +2581,20 @@ bool wxDbTable::SetColNull(UWORD colNo, bool set) /********** wxDbTable::SetColNull() **********/ bool wxDbTable::SetColNull(const wxString &colName, bool set) { - int colNo; - for (colNo = 0; colNo < noCols; colNo++) + int colNumber; + for (colNumber = 0; colNumber < m_numCols; colNumber++) { - if (!wxStricmp(colName, colDefs[colNo].ColName)) + if (!wxStricmp(colName, colDefs[colNumber].ColName)) break; } - if (colNo < noCols) + if (colNumber < m_numCols) { - colDefs[colNo].Null = set; + colDefs[colNumber].Null = set; if (set) // Blank out the values in the member variable - ClearMemberVar((UWORD)colNo,false); // Must call with false here, or infinite recursion will happen + ClearMemberVar((UWORD)colNumber,false); // Must call with false here, or infinite recursion will happen - setCbValueForColumn(colNo); + setCbValueForColumn(colNumber); return true; } @@ -2689,48 +2696,48 @@ void wxDbTable::SetRowMode(const rowmode_t rowmode) } // wxDbTable::SetRowMode() -wxVariant wxDbTable::GetCol(const int colNo) const +wxVariant wxDbTable::GetColumn(const int colNumber) const { wxVariant val; - if ((colNo < noCols) && (!IsColNull((UWORD)colNo))) + if ((colNumber < m_numCols) && (!IsColNull((UWORD)colNumber))) { - switch (colDefs[colNo].SqlCtype) + switch (colDefs[colNumber].SqlCtype) { case SQL_CHAR: case SQL_VARCHAR: - val = (wxChar *)(colDefs[colNo].PtrDataObj); + val = (wxChar *)(colDefs[colNumber].PtrDataObj); break; case SQL_C_LONG: case SQL_C_SLONG: - val = *(long *)(colDefs[colNo].PtrDataObj); + val = *(long *)(colDefs[colNumber].PtrDataObj); break; case SQL_C_SHORT: case SQL_C_SSHORT: - val = (long int )(*(short *)(colDefs[colNo].PtrDataObj)); + val = (long int )(*(short *)(colDefs[colNumber].PtrDataObj)); break; case SQL_C_ULONG: - val = (long)(*(unsigned long *)(colDefs[colNo].PtrDataObj)); + val = (long)(*(unsigned long *)(colDefs[colNumber].PtrDataObj)); break; case SQL_C_TINYINT: - val = (long)(*(wxChar *)(colDefs[colNo].PtrDataObj)); + val = (long)(*(wxChar *)(colDefs[colNumber].PtrDataObj)); break; case SQL_C_UTINYINT: - val = (long)(*(wxChar *)(colDefs[colNo].PtrDataObj)); + val = (long)(*(wxChar *)(colDefs[colNumber].PtrDataObj)); break; case SQL_C_USHORT: - val = (long)(*(UWORD *)(colDefs[colNo].PtrDataObj)); + val = (long)(*(UWORD *)(colDefs[colNumber].PtrDataObj)); break; case SQL_C_DATE: - val = (DATE_STRUCT *)(colDefs[colNo].PtrDataObj); + val = (DATE_STRUCT *)(colDefs[colNumber].PtrDataObj); break; case SQL_C_TIME: - val = (TIME_STRUCT *)(colDefs[colNo].PtrDataObj); + val = (TIME_STRUCT *)(colDefs[colNumber].PtrDataObj); break; case SQL_C_TIMESTAMP: - val = (TIMESTAMP_STRUCT *)(colDefs[colNo].PtrDataObj); + val = (TIMESTAMP_STRUCT *)(colDefs[colNumber].PtrDataObj); break; case SQL_C_DOUBLE: - val = *(double *)(colDefs[colNo].PtrDataObj); + val = *(double *)(colDefs[colNumber].PtrDataObj); break; default: assert(0); @@ -2740,57 +2747,57 @@ wxVariant wxDbTable::GetCol(const int colNo) const } // wxDbTable::GetCol() -void wxDbTable::SetCol(const int colNo, const wxVariant val) +void wxDbTable::SetColumn(const int colNumber, const wxVariant val) { //FIXME: Add proper wxDateTime support to wxVariant.. wxDateTime dateval; - SetColNull((UWORD)colNo, val.IsNull()); + SetColNull((UWORD)colNumber, val.IsNull()); if (!val.IsNull()) { - if ((colDefs[colNo].SqlCtype == SQL_C_DATE) - || (colDefs[colNo].SqlCtype == SQL_C_TIME) - || (colDefs[colNo].SqlCtype == SQL_C_TIMESTAMP)) + if ((colDefs[colNumber].SqlCtype == SQL_C_DATE) + || (colDefs[colNumber].SqlCtype == SQL_C_TIME) + || (colDefs[colNumber].SqlCtype == SQL_C_TIMESTAMP)) { //Returns null if invalid! if (!dateval.ParseDate(val.GetString())) - SetColNull((UWORD)colNo, true); + SetColNull((UWORD)colNumber, true); } - switch (colDefs[colNo].SqlCtype) + switch (colDefs[colNumber].SqlCtype) { case SQL_CHAR: case SQL_VARCHAR: - csstrncpyt((wxChar *)(colDefs[colNo].PtrDataObj), + csstrncpyt((wxChar *)(colDefs[colNumber].PtrDataObj), val.GetString().c_str(), - colDefs[colNo].SzDataObj-1); //TODO: glt ??? * sizeof(wxChar) ??? + colDefs[colNumber].SzDataObj-1); //TODO: glt ??? * sizeof(wxChar) ??? break; case SQL_C_LONG: case SQL_C_SLONG: - *(long *)(colDefs[colNo].PtrDataObj) = val; + *(long *)(colDefs[colNumber].PtrDataObj) = val; break; case SQL_C_SHORT: case SQL_C_SSHORT: - *(short *)(colDefs[colNo].PtrDataObj) = (short)val.GetLong(); + *(short *)(colDefs[colNumber].PtrDataObj) = (short)val.GetLong(); break; case SQL_C_ULONG: - *(unsigned long *)(colDefs[colNo].PtrDataObj) = val.GetLong(); + *(unsigned long *)(colDefs[colNumber].PtrDataObj) = val.GetLong(); break; case SQL_C_TINYINT: - *(wxChar *)(colDefs[colNo].PtrDataObj) = val.GetChar(); + *(wxChar *)(colDefs[colNumber].PtrDataObj) = val.GetChar(); break; case SQL_C_UTINYINT: - *(wxChar *)(colDefs[colNo].PtrDataObj) = val.GetChar(); + *(wxChar *)(colDefs[colNumber].PtrDataObj) = val.GetChar(); break; case SQL_C_USHORT: - *(unsigned short *)(colDefs[colNo].PtrDataObj) = (unsigned short)val.GetLong(); + *(unsigned short *)(colDefs[colNumber].PtrDataObj) = (unsigned short)val.GetLong(); break; //FIXME: Add proper wxDateTime support to wxVariant.. case SQL_C_DATE: { DATE_STRUCT *dataptr = - (DATE_STRUCT *)colDefs[colNo].PtrDataObj; + (DATE_STRUCT *)colDefs[colNumber].PtrDataObj; dataptr->year = (SWORD)dateval.GetYear(); dataptr->month = (UWORD)(dateval.GetMonth()+1); @@ -2800,7 +2807,7 @@ void wxDbTable::SetCol(const int colNo, const wxVariant val) case SQL_C_TIME: { TIME_STRUCT *dataptr = - (TIME_STRUCT *)colDefs[colNo].PtrDataObj; + (TIME_STRUCT *)colDefs[colNumber].PtrDataObj; dataptr->hour = dateval.GetHour(); dataptr->minute = dateval.GetMinute(); @@ -2810,7 +2817,7 @@ void wxDbTable::SetCol(const int colNo, const wxVariant val) case SQL_C_TIMESTAMP: { TIMESTAMP_STRUCT *dataptr = - (TIMESTAMP_STRUCT *)colDefs[colNo].PtrDataObj; + (TIMESTAMP_STRUCT *)colDefs[colNumber].PtrDataObj; dataptr->year = (SWORD)dateval.GetYear(); dataptr->month = (UWORD)(dateval.GetMonth()+1); dataptr->day = (UWORD)dateval.GetDay(); @@ -2821,7 +2828,7 @@ void wxDbTable::SetCol(const int colNo, const wxVariant val) } break; case SQL_C_DOUBLE: - *(double *)(colDefs[colNo].PtrDataObj) = val; + *(double *)(colDefs[colNumber].PtrDataObj) = val; break; default: assert(0); @@ -2839,7 +2846,7 @@ GenericKey wxDbTable::GetKey() blkptr = (wxChar *) blk; int i; - for (i=0; i < noCols; i++) + for (i=0; i < m_numCols; i++) { if (colDefs[i].KeyField) { @@ -2864,7 +2871,7 @@ void wxDbTable::SetKey(const GenericKey& k) blkptr = (wxChar *)blk; int i; - for (i=0; i < noCols; i++) + for (i=0; i < m_numCols; i++) { if (colDefs[i].KeyField) {