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
wxString tablePath; // needed for dBase tables
wxString tableName; // Table name
wxString queryTableName; // Query Table Name
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
bool queryOnly; // Query Only, no inserts, updates or deletes
// Column Definitions
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
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
bool queryOnly; // Query Only, no inserts, updates or deletes
// Column Definitions
const wxString &GetQueryTableName() { return queryTableName; }
const wxString &GetTablePath() { return tablePath; }
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; }
const wxString &GetFromClause() { return from; }
const wxString &GetOrderByClause() { return orderBy; }
{ BuildWhereClause(pWhereClause,typeOfWhere,qualTableName,useLikeComparison); }
#endif
bool CanSelectForUpdate(void);
{ 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 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);
void *pData, SWORD cType,
int size, bool keyField = false, bool upd = true,
bool insAllow = true, bool derivedCol = false);
ULONG Count(const wxString &args=_T("*"));
int DB_STATUS(void) { return(pDb->DB_STATUS); }
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 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__
bool SetNull(const char *colName, bool set=true) { return (SetNull(colName,set)); }
#endif
#ifdef __WXDEBUG__
//TODO: Need to Document
typedef enum { WX_ROW_MODE_QUERY , WX_ROW_MODE_INDIVIDUAL } rowmode_t;
virtual void SetRowMode(const rowmode_t rowmode);
//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);
virtual GenericKey GetKey(void);
virtual void SetKey(const GenericKey &key);
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG))
{
(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, "));
return val.GetLong();
}
wxFAIL_MSG (_T("unknown column, "));
(sqltype == SQL_C_FLOAT) ||
(sqltype == SQL_C_DOUBLE))
{
(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"));
return val.GetDouble();
}
wxFAIL_MSG (_T("unknown column"));
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG))
{
(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, "));
return val.GetBool();
}
wxFAIL_MSG (_T("unknown column, "));
(sqltype == SQL_C_TIME) ||
(sqltype == SQL_C_TIMESTAMP))
{
(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());
}
}
return new wxDateTime(val.GetDateTime());
}
}
}
wxVariant val(date);
m_rowmodified = true;
}
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"));
}
}
wxFAIL_MSG (_T("unknown column data type"));
wxLogDebug(wxT("GetValue() on %i,%i"),row,col);
ValidateRow(row);
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();
wxLogDebug(wxT("\tReturning \"%s\"\n"),val.GetString().c_str());
return val.GetString();
wxVariant val(value);
m_rowmodified = true;
wxVariant val(value);
m_rowmodified = true;
- m_data->SetCol(m_ColInfo[col].DbCol,val);
+ m_data->SetColumn(m_ColInfo[col].DbCol,val);
wxVariant val(value);
m_rowmodified = true;
wxVariant val(value);
m_rowmodified = true;
- m_data->SetCol(m_ColInfo[col].DbCol,val);
+ m_data->SetColumn(m_ColInfo[col].DbCol,val);
wxVariant val(value);
m_rowmodified = true;
wxVariant val(value);
m_rowmodified = true;
- m_data->SetCol(m_ColInfo[col].DbCol,val);
+ m_data->SetColumn(m_ColInfo[col].DbCol,val);
wxVariant val(value);
m_rowmodified = true;
wxVariant val(value);
m_rowmodified = true;
- m_data->SetCol(m_ColInfo[col].DbCol,val);
+ m_data->SetColumn(m_ColInfo[col].DbCol,val);
hstmtInternal = 0;
colDefs = 0;
tableID = 0;
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
where.Empty(); // Where clause
orderBy.Empty(); // Order By clause
from.Empty(); // From clause
hdbc = pDb->GetHDBC();
// Allocate space for column definitions
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)
// Allocate statement handles for the table
if (!queryOnly)
// Bind each column of the table that should be bound
// to a parameter marker
int i;
// Bind each column of the table that should be bound
// to a parameter marker
int i;
- for (i=0, colNo=1; i < noCols; i++)
+ for (i=0, colNumber=1; i < m_numCols; i++)
- 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)
{
fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj,
precision+1, &colDefs[i].CbValue) != SQL_SUCCESS)
{
- 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)
{
fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj,
precision+1, &colDefs[i].CbValue) != SQL_SUCCESS)
{
// Bind each column of the table to a memory address for fetching data
UWORD i;
// 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,
{
cb = colDefs[i].CbValue;
if (SQLBindCol(cursor, (UWORD)(i+1), colDefs[i].SqlCtype, (UCHAR*) colDefs[i].PtrDataObj,
// Set the Null member variable to indicate the Null state
// of each column just read in.
int i;
// 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);
}
}
colDefs[i].Null = (colDefs[i].CbValue == SQL_NULL_DATA);
}
}
// Set the Null member variable to indicate the Null state
// of each column just read in.
int i;
// 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);
}
}
colDefs[i].Null = (colDefs[i].CbValue == SQL_NULL_DATA);
}
}
{
// Find the parameter
int i;
{
// Find the parameter
int i;
- for (i=0; i < noCols; i++)
+ for (i=0; i < m_numCols; i++)
{
if (colDefs[i].PtrDataObj == pParmID)
{
{
if (colDefs[i].PtrDataObj == pParmID)
{
// Calculate the maximum size of the concatenated
// keys for use with wxDbGrid
m_keysize = 0;
// 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)
{
{
if (colDefs[i].KeyField)
{
*/
// Build an insert statement using parameter markers
*/
// 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());
{
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;
{
if (! colDefs[i].InsertAllowed)
continue;
- for (i = 0; i < noCols; i++)
+ for (i = 0; i < m_numCols; i++)
{
if (! colDefs[i].InsertAllowed)
continue;
{
if (! colDefs[i].InsertAllowed)
continue;
// 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 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 (CanUpdateByROWID())
{
SDWORD cb;
wxChar rowid[wxDB_ROWID_LEN+1];
{
SDWORD cb;
wxChar rowid[wxDB_ROWID_LEN+1];
// 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.
// 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;
{
pSqlStmt += wxT("ROWID = '");
pSqlStmt += rowid;
// Add the column list
int i;
wxString tStr;
// 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
{
tStr = colDefs[i].ColName;
// If joining tables, the base table column names must be qualified to avoid ambiguity
pSqlStmt += wxT(".");
}
pSqlStmt += pDb->SQLColumnName(colDefs[i].ColName);
pSqlStmt += wxT(".");
}
pSqlStmt += pDb->SQLColumnName(colDefs[i].ColName);
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.
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)
{
// If joining tables, the base table column names must be qualified to avoid ambiguity
if (appendFromClause || pDb->Dbms() == dbmsACCESS)
// Append a list of columns to be updated
int i;
// 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)
{
// Only append Updateable columns
if (colDefs[i].Updateable)
// 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 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 (CanUpdateByROWID())
{
SDWORD cb;
wxChar rowid[wxDB_ROWID_LEN+1];
{
SDWORD cb;
wxChar rowid[wxDB_ROWID_LEN+1];
// 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.
// 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;
{
pSqlStmt += wxT("ROWID = '");
pSqlStmt += rowid;
wxString colValue;
// Loop through the columns building a where clause as you go
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
{
// 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
{
// 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)
continue;
// If there is more than 1 column, join them with the keyword "AND"
if (moreThanOneColumn)
moreThanOneColumn = true;
// Concatenate where phrase for the column
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(".");
}
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(" = ");
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
{
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:
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:
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:
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));
- colValue.Printf(wxT("%lu"), *((UDWORD *) colDefs[colNo].PtrDataObj));
+ colValue.Printf(wxT("%lu"), *((UDWORD *) colDefs[colNumber].PtrDataObj));
- colValue.Printf(wxT("%.6f"), *((SFLOAT *) colDefs[colNo].PtrDataObj));
+ colValue.Printf(wxT("%.6f"), *((SFLOAT *) colDefs[colNumber].PtrDataObj));
break;
case SQL_C_DOUBLE:
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"),
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;
wxFAIL_MSG(strMsg.c_str());
}
break;
// Create the table
#ifdef DBDEBUG_CONSOLE
// 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)
{
// Exclude derived columns since they are NOT part of the base table
if (colDefs[i].DerivedCol)
sqlStmt.Printf(wxT("CREATE TABLE %s ("),
pDb->SQLTableName(tableName.c_str()).c_str());
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)
{
// Exclude derived columns since they are NOT part of the base table
if (colDefs[i].DerivedCol)
needComma = true;
}
// If there is a primary key defined, include it in the create statement
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)
{
{
if (colDefs[i].KeyField)
{
}
// List column name(s) of column(s) comprising the primary key
}
// 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)
{
{
if (colDefs[i].KeyField)
{
// 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
// 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;
{
if (wxStrcmp(colDefs[j].ColName,pIdxDefs[i].ColName) == 0)
found = true;
{
// Find the details on this column
int j;
{
// 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 )
{
{
if ( wxStrcmp( pIdxDefs[i].ColName, colDefs[j].ColName ) == 0 )
{
/********** wxDbTable::SetOrderByColNums() **********/
bool wxDbTable::SetOrderByColNums(UWORD first, ... )
{
/********** 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. */
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
//
{
// 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;
}
{
abort = true;
continue;
}
+ if (colNumber != first)
- tempStr += colDefs[colNo].ColName;
- colNo = va_arg (argptr, int);
+ tempStr += colDefs[colNumber].ColName;
+ colNumber = va_arg (argptr, int);
}
va_end (argptr); /* Reset variable arguments. */
}
va_end (argptr); /* Reset variable arguments. */
{
// Find the parameter
int i;
{
// Find the parameter
int i;
- for (i=0; i < noCols; i++)
+ for (i=0; i < m_numCols; i++)
{
if (colDefs[i].PtrDataObj == pParmID)
{
{
if (colDefs[i].PtrDataObj == pParmID)
{
/********** wxDbTable::IsColNull() **********/
/********** 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.
{
/*
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
{
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);
- return(( *((SWORD *) colDefs[colNo].PtrDataObj)) == 0);
+ return(( *((SWORD *) colDefs[colNumber].PtrDataObj)) == 0);
- return(( *((UWORD*) colDefs[colNo].PtrDataObj)) == 0);
+ return(( *((UWORD*) colDefs[colNumber].PtrDataObj)) == 0);
- return(( *((SDWORD *) colDefs[colNo].PtrDataObj)) == 0);
+ return(( *((SDWORD *) colDefs[colNumber].PtrDataObj)) == 0);
- return(( *((UDWORD *) colDefs[colNo].PtrDataObj)) == 0);
+ return(( *((UDWORD *) colDefs[colNumber].PtrDataObj)) == 0);
- return(( *((SFLOAT *) colDefs[colNo].PtrDataObj)) == 0);
+ return(( *((SFLOAT *) colDefs[colNumber].PtrDataObj)) == 0);
- return((*((SDOUBLE *) colDefs[colNo].PtrDataObj)) == 0);
+ return((*((SDOUBLE *) colDefs[colNumber].PtrDataObj)) == 0);
case SQL_C_TIMESTAMP:
TIMESTAMP_STRUCT *pDt;
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
if (pDt->year == 0 && pDt->month == 0 && pDt->day == 0)
return true;
else
- return (colDefs[colNo].Null);
+ return (colDefs[colNumber].Null);
} // wxDbTable::IsColNull()
} // wxDbTable::IsColNull()
} // wxDbTable::CanSelectForUpdate()
} // wxDbTable::CanSelectForUpdate()
-/********** wxDbTable::CanUpdByROWID() **********/
-bool wxDbTable::CanUpdByROWID(void)
+/********** wxDbTable::CanUpdateByROWID() **********/
+bool wxDbTable::CanUpdateByROWID(void)
{
/*
* NOTE: Returning false for now until this can be debugged,
{
/*
* NOTE: Returning false for now until this can be debugged,
-} // wxDbTable::CanUpdByROWID()
+} // wxDbTable::CanUpdateByROWID()
/********** wxDbTable::IsCursorClosedOnCommit() **********/
/********** wxDbTable::IsCursorClosedOnCommit() **********/
/********** wxDbTable::ClearMemberVar() **********/
/********** 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
{
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:
break;
case SQL_C_SSHORT:
- *((SWORD *) colDefs[colNo].PtrDataObj) = 0;
+ *((SWORD *) colDefs[colNumber].PtrDataObj) = 0;
break;
case SQL_C_USHORT:
break;
case SQL_C_USHORT:
- *((UWORD*) colDefs[colNo].PtrDataObj) = 0;
+ *((UWORD*) colDefs[colNumber].PtrDataObj) = 0;
break;
case SQL_C_LONG:
case SQL_C_SLONG:
break;
case SQL_C_LONG:
case SQL_C_SLONG:
- *((SDWORD *) colDefs[colNo].PtrDataObj) = 0;
+ *((SDWORD *) colDefs[colNumber].PtrDataObj) = 0;
- *((UDWORD *) colDefs[colNo].PtrDataObj) = 0;
+ *((UDWORD *) colDefs[colNumber].PtrDataObj) = 0;
- *((SFLOAT *) colDefs[colNo].PtrDataObj) = 0.0f;
+ *((SFLOAT *) colDefs[colNumber].PtrDataObj) = 0.0f;
break;
case SQL_C_DOUBLE:
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;
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;
pDt->year = 0;
pDt->month = 0;
pDt->day = 0;
} // wxDbTable::ClearMemberVar()
} // wxDbTable::ClearMemberVar()
int i;
// Loop through the columns setting each member variable to zero
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()
ClearMemberVar((UWORD)i,setToNull);
} // wxDbTable::ClearMemberVars()
/********** wxDbTable::SetColDefs() **********/
/********** 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)
{
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
if (!colDefs) // May happen if the database connection fails
if (fieldName.Length() > (unsigned int) DB_MAX_COLUMN_NAME_LEN)
{
wxStrncpy(colDefs[index].ColName, fieldName, DB_MAX_COLUMN_NAME_LEN);
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);
fieldName.c_str(),colDefs[index].ColName);
- wxFAIL_MSG(tmpMsg);
-#endif // __WXDEBUG__
+ wxFAIL_MSG(tmpStr);
+ wxLogDebug(tmpStr);
}
else
wxStrcpy(colDefs[index].ColName, fieldName);
}
else
wxStrcpy(colDefs[index].ColName, fieldName);
- colDefs[index].Updateable = upd;
+ colDefs[index].Updateable = updateable;
colDefs[index].InsertAllowed = insAllow;
}
colDefs[index].Null = false;
colDefs[index].InsertAllowed = insAllow;
}
colDefs[index].Null = false;
} // wxDbTable::SetColDefs()
} // wxDbTable::SetColDefs()
wxString whereClause;
whereClause.Empty();
wxString whereClause;
whereClause.Empty();
+ if (CanUpdateByROWID())
{
SDWORD cb;
wxChar rowid[wxDB_ROWID_LEN+1];
{
SDWORD cb;
wxChar rowid[wxDB_ROWID_LEN+1];
// 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.
// 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;
{
whereClause += pDb->SQLTableName(queryTableName);
// whereClause += queryTableName;
/********** wxDbTable::SetColNull() **********/
/********** wxDbTable::SetColNull() **********/
-bool wxDbTable::SetColNull(UWORD colNo, bool set)
+bool wxDbTable::SetColNull(UWORD colNumber, bool set)
+ if (colNumber < m_numCols)
- colDefs[colNo].Null = set;
+ colDefs[colNumber].Null = set;
if (set) // Blank out the values in the member variable
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);
/********** wxDbTable::SetColNull() **********/
bool wxDbTable::SetColNull(const wxString &colName, 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))
+ if (colNumber < m_numCols)
- colDefs[colNo].Null = set;
+ colDefs[colNumber].Null = set;
if (set) // Blank out the values in the member variable
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);
} // wxDbTable::SetRowMode()
} // wxDbTable::SetRowMode()
-wxVariant wxDbTable::GetCol(const int colNo) const
+wxVariant wxDbTable::GetColumn(const int colNumber) const
- 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:
{
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:
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:
break;
case SQL_C_SHORT:
case SQL_C_SSHORT:
- val = (long int )(*(short *)(colDefs[colNo].PtrDataObj));
+ val = (long int )(*(short *)(colDefs[colNumber].PtrDataObj));
- val = (long)(*(unsigned long *)(colDefs[colNo].PtrDataObj));
+ val = (long)(*(unsigned long *)(colDefs[colNumber].PtrDataObj));
break;
case SQL_C_TINYINT:
break;
case SQL_C_TINYINT:
- val = (long)(*(wxChar *)(colDefs[colNo].PtrDataObj));
+ val = (long)(*(wxChar *)(colDefs[colNumber].PtrDataObj));
break;
case SQL_C_UTINYINT:
break;
case SQL_C_UTINYINT:
- val = (long)(*(wxChar *)(colDefs[colNo].PtrDataObj));
+ val = (long)(*(wxChar *)(colDefs[colNumber].PtrDataObj));
break;
case SQL_C_USHORT:
break;
case SQL_C_USHORT:
- val = (long)(*(UWORD *)(colDefs[colNo].PtrDataObj));
+ val = (long)(*(UWORD *)(colDefs[colNumber].PtrDataObj));
- val = (DATE_STRUCT *)(colDefs[colNo].PtrDataObj);
+ val = (DATE_STRUCT *)(colDefs[colNumber].PtrDataObj);
- val = (TIME_STRUCT *)(colDefs[colNo].PtrDataObj);
+ val = (TIME_STRUCT *)(colDefs[colNumber].PtrDataObj);
break;
case SQL_C_TIMESTAMP:
break;
case SQL_C_TIMESTAMP:
- val = (TIMESTAMP_STRUCT *)(colDefs[colNo].PtrDataObj);
+ val = (TIMESTAMP_STRUCT *)(colDefs[colNumber].PtrDataObj);
break;
case SQL_C_DOUBLE:
break;
case SQL_C_DOUBLE:
- val = *(double *)(colDefs[colNo].PtrDataObj);
+ val = *(double *)(colDefs[colNumber].PtrDataObj);
break;
default:
assert(0);
break;
default:
assert(0);
-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;
{
//FIXME: Add proper wxDateTime support to wxVariant..
wxDateTime dateval;
- SetColNull((UWORD)colNo, val.IsNull());
+ SetColNull((UWORD)colNumber, 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()))
{
//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:
{
case SQL_CHAR:
case SQL_VARCHAR:
- csstrncpyt((wxChar *)(colDefs[colNo].PtrDataObj),
+ csstrncpyt((wxChar *)(colDefs[colNumber].PtrDataObj),
- 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:
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:
break;
case SQL_C_SHORT:
case SQL_C_SSHORT:
- *(short *)(colDefs[colNo].PtrDataObj) = (short)val.GetLong();
+ *(short *)(colDefs[colNumber].PtrDataObj) = (short)val.GetLong();
- *(unsigned long *)(colDefs[colNo].PtrDataObj) = val.GetLong();
+ *(unsigned long *)(colDefs[colNumber].PtrDataObj) = val.GetLong();
break;
case SQL_C_TINYINT:
break;
case SQL_C_TINYINT:
- *(wxChar *)(colDefs[colNo].PtrDataObj) = val.GetChar();
+ *(wxChar *)(colDefs[colNumber].PtrDataObj) = val.GetChar();
break;
case SQL_C_UTINYINT:
break;
case SQL_C_UTINYINT:
- *(wxChar *)(colDefs[colNo].PtrDataObj) = val.GetChar();
+ *(wxChar *)(colDefs[colNumber].PtrDataObj) = val.GetChar();
break;
case SQL_C_USHORT:
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 =
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);
dataptr->year = (SWORD)dateval.GetYear();
dataptr->month = (UWORD)(dateval.GetMonth()+1);
case SQL_C_TIME:
{
TIME_STRUCT *dataptr =
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();
dataptr->hour = dateval.GetHour();
dataptr->minute = dateval.GetMinute();
case SQL_C_TIMESTAMP:
{
TIMESTAMP_STRUCT *dataptr =
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();
dataptr->year = (SWORD)dateval.GetYear();
dataptr->month = (UWORD)(dateval.GetMonth()+1);
dataptr->day = (UWORD)dateval.GetDay();
}
break;
case SQL_C_DOUBLE:
}
break;
case SQL_C_DOUBLE:
- *(double *)(colDefs[colNo].PtrDataObj) = val;
+ *(double *)(colDefs[colNumber].PtrDataObj) = val;
break;
default:
assert(0);
break;
default:
assert(0);
blkptr = (wxChar *) blk;
int i;
blkptr = (wxChar *) blk;
int i;
- for (i=0; i < noCols; i++)
+ for (i=0; i < m_numCols; i++)
{
if (colDefs[i].KeyField)
{
{
if (colDefs[i].KeyField)
{
blkptr = (wxChar *)blk;
int i;
blkptr = (wxChar *)blk;
int i;
- for (i=0; i < noCols; i++)
+ for (i=0; i < m_numCols; i++)
{
if (colDefs[i].KeyField)
{
{
if (colDefs[i].KeyField)
{