// Name: dbgrid.cpp
// Purpose: Displays a wxDbTable in a wxGrid.
// Author: Roger Gammans, Paul Gammans
-// Modified by:
-// Created:
+// Modified by:
+// Created:
// RCS-ID: $Id$
// Copyright: (c) 1999 The Computer Surgery (roger@computer-surgery.co.uk)
// Licence: wxWindows licence
// Branched From : dbgrid.cpp,v 1.18 2000/12/19 13:00:58
///////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "dbgrid.h"
#endif
#if wxUSE_ODBC
-#if wxUSE_NEW_GRID
+#if wxUSE_GRID
#ifndef WX_PRECOMP
#include "wx/textctrl.h"
#include "wx/generic/gridctrl.h"
#include "wx/dbgrid.h"
+// DLL options compatibility check:
+#include "wx/app.h"
+WX_CHECK_BUILD_OPTIONS("wxDbGrid")
+
wxDbGridCellAttrProvider::wxDbGridCellAttrProvider()
{
break;
}
}
-
+
}
return attr;
}
wxDbGridTableBase::wxDbGridTableBase(wxDbTable *tab, wxDbGridColInfo* ColInfo,
int count, bool takeOwnership) :
- m_keys(),
+ m_keys(),
m_data(tab),
m_dbowner(takeOwnership),
- m_rowmodified(false)
+ m_rowmodified(FALSE)
{
if (count == wxUSE_QUERY)
if (i < m_nocols)
{
wxLogDebug(wxT("NoCols under length after traversing %i items"),i);
- }
+ }
#endif
}
}
{
wxDbGridCellAttrProvider *provider;
- //Can't check for update here as
+ //Can't check for update here as
//FIXME: should i remove m_ColInfo and m_data from m_attrProvider if a wxDbGridAttrProvider
// if ((provider = dynamic_cast<wxDbGridCellAttrProvider *>(GetAttrProvider())))
// Using C casting for now until we can support dynamic_cast with wxWindows
- if ((provider = (wxDbGridCellAttrProvider *)(GetAttrProvider())))
+ provider = (wxDbGridCellAttrProvider *)(GetAttrProvider());
+ if (provider)
{
provider->AssignDbTable(NULL);
}
delete [] m_ColInfo;
-
+
Writeback();
if (m_dbowner)
{
// use the default attr provider by default
SetAttrProvider(new wxDbGridCellAttrProvider(m_data, m_ColInfo));
}
- return true;
+ return TRUE;
}
}
m_keys.Empty();
m_data = tab;
- //FIXME: Remove dynamic_cast before sumision to wxwin
+ //FIXME: Remove dynamic_cast before sumision to wxwin
// if ((provider = dynamic_cast<wxDbGridCellAttrProvider *> (GetAttrProvider())))
// Using C casting for now until we can support dynamic_cast with wxWindows
- if ((provider = (wxDbGridCellAttrProvider *)(GetAttrProvider())))
+ provider = (wxDbGridCellAttrProvider *)(GetAttrProvider());
+ if (provider)
{
provider->AssignDbTable(m_data);
}
-
+
if (count == wxUSE_QUERY)
{
m_rowtotal = m_data ? m_data->Count() : 0;
grid->EndBatch();
}
m_dbowner = takeOwnership;
- m_rowmodified = false;
- return true;
+ m_rowmodified = FALSE;
+ return TRUE;
}
-wxString wxDbGridTableBase::GetTypeName(int row, int col)
+wxString wxDbGridTableBase::GetTypeName(int WXUNUSED(row), int col)
{
- if (col == 8)
- int breakpoint = 1;
-
if (GetNumberCols() > col)
{
if (m_ColInfo[col].wxtypename == wxGRID_VALUE_DBAUTO)
{
case SQL_C_CHAR:
return wxGRID_VALUE_STRING;
- break;
case SQL_C_SSHORT:
return wxGRID_VALUE_NUMBER;
- break;
case SQL_C_USHORT:
return wxGRID_VALUE_NUMBER;
- break;
case SQL_C_SLONG:
return wxGRID_VALUE_NUMBER;
- break;
case SQL_C_ULONG:
return wxGRID_VALUE_NUMBER;
- break;
case SQL_C_FLOAT:
return wxGRID_VALUE_FLOAT;
- break;
case SQL_C_DOUBLE:
return wxGRID_VALUE_FLOAT;
- break;
case SQL_C_DATE:
return wxGRID_VALUE_DATETIME;
- break;
case SQL_C_TIME:
return wxGRID_VALUE_DATETIME;
- break;
case SQL_C_TIMESTAMP:
return wxGRID_VALUE_DATETIME;
- break;
default:
return wxGRID_VALUE_STRING;
- break;
}
}
else
if (typeName == wxGRID_VALUE_STRING)
{
//FIXME ummm What about blob field etc.
- return true;
+ return TRUE;
}
if (m_data->IsColNull(m_ColInfo[col].DbCol))
{
- return false;
+ return FALSE;
}
if (m_data->GetNumberOfColumns() <= m_ColInfo[col].DbCol)
{
- //If a virtual column then we can't find it's type. we have to
- // return false to get using wxVariant.
- return false;
+ //If a virtual column then we can't find it's type. we have to
+ // return FALSE to get using wxVariant.
+ return FALSE;
}
int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
-
+
if (typeName == wxGRID_VALUE_DATETIME)
{
if ((sqltype == SQL_C_DATE) ||
- (sqltype == SQL_C_TIME) ||
+ (sqltype == SQL_C_TIME) ||
(sqltype == SQL_C_TIMESTAMP))
{
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
if (typeName == wxGRID_VALUE_NUMBER)
{
if ((sqltype == SQL_C_SSHORT) ||
- (sqltype == SQL_C_USHORT) ||
+ (sqltype == SQL_C_USHORT) ||
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG))
{
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
if (typeName == wxGRID_VALUE_FLOAT)
{
if ((sqltype == SQL_C_SSHORT) ||
- (sqltype == SQL_C_USHORT) ||
+ (sqltype == SQL_C_USHORT) ||
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG) ||
(sqltype == SQL_C_FLOAT) ||
(sqltype == SQL_C_DOUBLE))
{
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
- return false;
+ return FALSE;
}
-bool wxDbGridTableBase::CanSetValueAs(int row, int col, const wxString& typeName)
+bool wxDbGridTableBase::CanSetValueAs(int WXUNUSED(row), int col, const wxString& typeName)
{
- //Is this needed? As will be validated on SetValueAsXXXX
- ValidateRow(row);
-
- if (m_data->IsColNull(m_ColInfo[col].DbCol))
- {
- return false;
- }
-
if (typeName == wxGRID_VALUE_STRING)
{
//FIXME ummm What about blob field etc.
- return true;
+ return TRUE;
}
if (!(m_data->GetColDefs()[(m_ColInfo[col].DbCol)].Updateable))
{
- return false;
+ return FALSE;
}
if (m_data->GetNumberOfColumns() <= m_ColInfo[col].DbCol)
{
- //If a virtual column then we can't find it's type. we have to faulse to
+ //If a virtual column then we can't find it's type. we have to faulse to
//get using wxVairent.
- return false;
+ return FALSE;
}
int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
if (typeName == wxGRID_VALUE_DATETIME)
{
if ((sqltype == SQL_C_DATE) ||
- (sqltype == SQL_C_TIME) ||
+ (sqltype == SQL_C_TIME) ||
(sqltype == SQL_C_TIMESTAMP))
{
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
if (typeName == wxGRID_VALUE_NUMBER)
{
if ((sqltype == SQL_C_SSHORT) ||
- (sqltype == SQL_C_USHORT) ||
+ (sqltype == SQL_C_USHORT) ||
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG))
{
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
if (typeName == wxGRID_VALUE_FLOAT)
{
if ((sqltype == SQL_C_SSHORT) ||
- (sqltype == SQL_C_USHORT) ||
+ (sqltype == SQL_C_USHORT) ||
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG) ||
(sqltype == SQL_C_FLOAT) ||
(sqltype == SQL_C_DOUBLE))
{
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
- return false;
+ return FALSE;
}
long wxDbGridTableBase::GetValueAsLong(int row, int col)
}
int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
if ((sqltype == SQL_C_SSHORT) ||
- (sqltype == SQL_C_USHORT) ||
+ (sqltype == SQL_C_USHORT) ||
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG))
{
}
int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
if ((sqltype == SQL_C_SSHORT) ||
- (sqltype == SQL_C_USHORT) ||
+ (sqltype == SQL_C_USHORT) ||
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG) ||
(sqltype == SQL_C_FLOAT) ||
}
int sqltype = m_data->GetColDefs()[(m_ColInfo[col].DbCol)].SqlCtype;
if ((sqltype == SQL_C_SSHORT) ||
- (sqltype == SQL_C_USHORT) ||
+ (sqltype == SQL_C_USHORT) ||
(sqltype == SQL_C_SLONG) ||
(sqltype == SQL_C_ULONG))
{
{
wxLogDebug(wxT("GetValueAsCustom() on %i,%i"),row,col);
ValidateRow(row);
-
+
if (m_data->GetNumberOfColumns() <= m_ColInfo[col].DbCol)
{
wxFAIL_MSG (_T("You can not use GetValueAsCustom for virtual columns"));
return;
}
wxVariant val(date);
- m_rowmodified = true;
+ m_rowmodified = TRUE;
m_data->SetCol(m_ColInfo[col].DbCol,val);
}
}
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);
wxLogDebug(wxT("\tReturning \"%s\"\n"),val.GetString().c_str());
-
- return val.GetString();
+
+ return val.GetString();
}
ValidateRow(row);
wxVariant val(value);
- m_rowmodified = true;
+ m_rowmodified = TRUE;
m_data->SetCol(m_ColInfo[col].DbCol,val);
}
ValidateRow(row);
wxVariant val(value);
- m_rowmodified = true;
+ m_rowmodified = TRUE;
m_data->SetCol(m_ColInfo[col].DbCol,val);
}
ValidateRow(row);
wxVariant val(value);
- m_rowmodified = true;
+ m_rowmodified = TRUE;
m_data->SetCol(m_ColInfo[col].DbCol,val);
}
ValidateRow(row);
wxVariant val(value);
- m_rowmodified = true;
+ m_rowmodified = TRUE;
m_data->SetCol(m_ColInfo[col].DbCol,val);
}
m_data->SetKey(k);
if (!m_data->QueryOnKeyFields())
{
- wxDbLogExtendedErrorMsg("ODBC error during Query()\n\n", m_data->GetDb(),__FILE__,__LINE__);
+ wxDbLogExtendedErrorMsg(_T("ODBC error during Query()\n\n"), m_data->GetDb(),__TFILE__,__LINE__);
}
m_data->GetNext();
m_row = row;
}
- m_rowmodified = false;
+ m_rowmodified = FALSE;
}
bool wxDbGridTableBase::Writeback() const
{
if (!m_rowmodified)
{
- return true;
+ return TRUE;
}
- bool result=true;
+ bool result=TRUE;
wxLogDebug(wxT("\trow key unknown"));
-// FIXME: this code requires dbtable support for record status
+// FIXME: this code requires dbtable support for record status
#if 0
switch (m_data->get_ModifiedStatus())
{
return result;
}
-#include <wx/arrimpl.cpp>
+#include "wx/arrimpl.cpp"
-WX_DEFINE_OBJARRAY(keyarray);
+WX_DEFINE_EXPORTED_OBJARRAY(keyarray);
-#endif // #if wxUSE_NEW_GRID
+#endif // #if wxUSE_GRID
#endif // #if wxUSE_ODBC