]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/dbbrowse/browsedb.cpp
fix wrong assert in SetItemBitmap() (patch 1668449; bug 1667505)
[wxWidgets.git] / demos / dbbrowse / browsedb.cpp
index 9583c776b1b089dcfff5adeab9b057ef6db2419c..c316d4c711aa8a6bf66cee80ef14a31170508590 100644 (file)
@@ -1,22 +1,14 @@
 //----------------------------------------------------------------------------------------
-// Name:               BrowserDB.h,cpp
-// Purpose:    a wxDB class
-// Author:             Mark Johnson
+// Name:        BrowserDB.h,cpp
+// Purpose:     a wxDB class
+// Author:      Mark Johnson
 // Modified by:
-// Created:    19991127.mj10777
-// Copyright:  (c) Mark Johnson
-// Licence:    wxWindows license
-// RCS-ID:             $Id$
-//----------------------------------------------------------------------------------------
-//-- 1)
-//----------------------------------------------------------------------------------------
-//-- all #ifdefs that the whole Project needs. -------------------------------------------
-//----------------------------------------------------------------------------------------
-#ifdef __GNUG__
-#pragma implementation
-#pragma interface
-#endif
+// Created:     19991127.mj10777
+// Copyright:   (c) Mark Johnson
+// Licence:     wxWindows license
+// RCS-ID:      $Id$
 //----------------------------------------------------------------------------------------
+
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 //----------------------------------------------------------------------------------------
@@ -38,7 +30,7 @@ wxDbConnectInf DbConnectInf;
 #endif
 
 //----------------------------------------------------------------------------------------
-extern WXDLLEXPORT_DATA(wxDbList*) PtrBegDbList;       /* from db.cpp, used in getting back error results from db connections */
+extern WXDLLEXPORT_DATA(wxDbList*) PtrBegDbList;    /* from db.cpp, used in getting back error results from db connections */
 
 //----------------------------------------------------------------------------------------
 wxChar *GetExtendedDBErrorMsg(wxChar *ErrFile, int ErrLine)
@@ -57,7 +49,7 @@ wxChar *GetExtendedDBErrorMsg(wxChar *ErrFile, int ErrLine)
     msg.Append (_T("\nODBC errors:\n"));
     // msg += _T("\n");
     /* Scan through each database connection displaying
-    * any ODBC errors that have occured. */
+    * any ODBC errors that have occurred. */
     wxDbList *pDbList;
     for (pDbList = PtrBegDbList; pDbList; pDbList = pDbList->PtrNext)
     {
@@ -70,7 +62,7 @@ wxChar *GetExtendedDBErrorMsg(wxChar *ErrFile, int ErrLine)
             if (pDbList->PtrDb->errorList[i])
             {
                 msg.Append(pDbList->PtrDb->errorList[i]);
-                if (wxStrcmp(pDbList->PtrDb->errorList[i],_T("")) != 0)
+                if (wxStrcmp(pDbList->PtrDb->errorList[i],wxEmptyString) != 0)
                     msg.Append(_T("\n"));
             }
         }
@@ -83,9 +75,9 @@ wxChar *GetExtendedDBErrorMsg(wxChar *ErrFile, int ErrLine)
 BrowserDB::BrowserDB()
 {
     PointerToNULL(0);
-    ODBCSource = _T("");  // ODBC data source name (created with ODBC Administrator under Win95/NT)
-    UserName   = _T("");  // database username - must already exist in the data source
-    Password   = _T("");  // password database username
+    ODBCSource = wxEmptyString;  // ODBC data source name (created with ODBC Administrator under Win95/NT)
+    UserName   = wxEmptyString;  // database username - must already exist in the data source
+    Password   = wxEmptyString;  // password database username
     OnFillSqlTyp();
     OnFilldbTyp();
 }  // BrowserDB Constructor
@@ -102,9 +94,9 @@ bool BrowserDB::Initialize(int Quiet)
     if (!OnStartDB(Quiet))
     {
         wxLogMessage(_("\n\n-E-> BrowserDB::OnStartDB(%s) : Failed ! "),ODBCSource.c_str());
-        return FALSE;
+        return false;
     }
-    return TRUE;
+    return true;
 }  // BrowserDB:Initialize
 
 //----------------------------------------------------------------------------------------
@@ -117,7 +109,7 @@ bool BrowserDB::OnStartDB(int Quiet)
     {
         if (!Quiet)
             wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is already open."));
-        return TRUE;
+        return true;
     }
 
     DbConnectInf.AllocHenv();
@@ -126,43 +118,43 @@ bool BrowserDB::OnStartDB(int Quiet)
     // Connect to datasource
     //---------------------------------------------------------------------------------------
     DlgUser *p_Dlg;
-    p_Dlg = new DlgUser(pDoc->p_MainFrame,pDoc,_T(""));
-    p_Dlg->s_DSN         = ODBCSource;
-    p_Dlg->s_User        = UserName;
+    p_Dlg = new DlgUser(pDoc->p_MainFrame,pDoc,wxEmptyString);
+    p_Dlg->s_DSN      = ODBCSource;
+    p_Dlg->s_User     = UserName;
     p_Dlg->s_Password = Password;
     p_Dlg->OnInit();
     p_Dlg->Fit();
-    
-    bool OK = FALSE;
+
+    bool OK = false;
     if (p_Dlg->ShowModal() == wxID_OK)
     {
         (pDoc->p_DSN+i_Which)->Usr = p_Dlg->s_User;
         (pDoc->p_DSN+i_Which)->Pas = p_Dlg->s_Password;
         UserName  = p_Dlg->s_User;
         Password  = p_Dlg->s_Password;
-        OK = TRUE;
+        OK = true;
     }
     delete p_Dlg;
     if (OK)
     {
         //--------------------------------------------------------------------------------------
-        DbConnectInf.SetDsn(ODBCSource);                 // ODBC data source name (created with ODBC Administrator under Win95/NT)
-        DbConnectInf.SetUserID(UserName);            // database username - must already exist in the data source
-        DbConnectInf.SetPassword(Password);      // password database username
+        DbConnectInf.SetDsn(ODBCSource);         // ODBC data source name (created with ODBC Administrator under Win95/NT)
+        DbConnectInf.SetUserID(UserName);        // database username - must already exist in the data source
+        DbConnectInf.SetPassword(Password);      // password database username
         db_BrowserDB = wxDbGetConnection(&DbConnectInf);
         // wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str());
         if (db_BrowserDB == NULL)
         {
-            DbConnectInf.SetDsn(wxT(""));
-            DbConnectInf.SetUserID(wxT(""));
-            DbConnectInf.SetPassword(wxT(""));
+            DbConnectInf.SetDsn(wxEmptyString);
+            DbConnectInf.SetUserID(wxEmptyString);
+            DbConnectInf.SetPassword(wxEmptyString);
             if (!Quiet)
             {
                 wxLogMessage(_("\n-E-> BrowserDB::OnConnectDataSource() DB CONNECTION ERROR : Unable to connect to the data source.\n\nCheck the name of your data source to verify it has been correctly entered/spelled.\n\nWith some databases, the user name and password must\nbe created with full rights to the table prior to making a connection\n(using tools provided by the database manufacturer)"));
                 wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End - Time needed : %ld ms"),ODBCSource.c_str(),sw.Time());
             }
             DbConnectInf.FreeHenv();
-            return FALSE;
+            return false;
         }
         //--------------------------------------------------------------------------------------
         if (!Quiet)
@@ -172,12 +164,12 @@ bool BrowserDB::OnStartDB(int Quiet)
             wxLogMessage(_("-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"),Temp1.c_str(),Temp2.c_str());
             wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End - Time needed : %ld ms"),ODBCSource.c_str(),sw.Time());
         }
-        return TRUE;
+        return true;
     }
     else
     {
         DbConnectInf.FreeHenv();
-        return FALSE;
+        return false;
     }
 }
 
@@ -197,19 +189,18 @@ bool BrowserDB::OnCloseDB(int Quiet)
     }
     if (!Quiet)
         wxLogMessage(_("\n-I-> BrowserDB::OnCloseDB() : End "));
-    return TRUE;
+    return true;
 }
 
 //----------------------------------------------------------------------------------------
 bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
 {
     SDWORD cb;
-    int         i_dbDataType;
-    int   i=0;
+    int i_dbDataType;
     wxChar s_temp[1024+1];
-    long                        l_temp;
-    double                      f_temp;
-    int                         AnzError=0;
+    long l_temp;
+    double f_temp;
+    int AnzError=0;
     TIMESTAMP_STRUCT t_temp;
     wxString Temp0;
     //-----------------------------
@@ -221,18 +212,19 @@ bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
         wxLogMessage(Temp0);
         wxMessageBox(Temp0);
 #endif
-        return FALSE;
+        return false;
     }
     else
     {
+        int i;
         for (i=0;i<Cols;i++)
         {
             wxStrcpy((cl_BrowserDB+i)->tableName,_T("-E->"));
             i_dbDataType = (cl_BrowserDB+i)->pColFor->i_dbDataType;
-            if (i_dbDataType == 0)                                               // Filter unsupported dbDataTypes
+            if (i_dbDataType == 0)         // Filter unsupported dbDataTypes
             {
                 if (((cl_BrowserDB+i)->pColFor->i_sqlDataType == SQL_VARCHAR) ||
-                                                 ((cl_BrowserDB+i)->pColFor->i_sqlDataType == SQL_LONGVARCHAR))
+                          ((cl_BrowserDB+i)->pColFor->i_sqlDataType == SQL_LONGVARCHAR))
                     i_dbDataType = DB_DATA_TYPE_VARCHAR;
                 if ((cl_BrowserDB+i)->pColFor->i_sqlDataType == SQL_C_DATE)
                     i_dbDataType = DB_DATA_TYPE_DATE;
@@ -244,15 +236,15 @@ bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
                     i_dbDataType = DB_DATA_TYPE_FLOAT;
             }
             if ((i_dbDataType == DB_DATA_TYPE_INTEGER) &&
-                                        ((cl_BrowserDB+i)->pColFor->i_sqlDataType == SQL_C_DOUBLE))
-            {  // DBASE Numeric
+                     ((cl_BrowserDB+i)->pColFor->i_sqlDataType == SQL_C_DOUBLE))
+            {    // DBASE Numeric
                 i_dbDataType = DB_DATA_TYPE_FLOAT;
             }
             switch(i_dbDataType)
             {
             case DB_DATA_TYPE_VARCHAR:
-                wxStrcpy(s_temp,_T(""));
-                if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB+i)->pColFor->i_dbDataType,&s_temp,sizeof(s_temp), &cb))
+                wxStrcpy(s_temp,wxEmptyString);
+                if (!db_BrowserDB->GetData((UWORD)(i+1),(SWORD)((cl_BrowserDB+i)->pColFor->i_dbDataType),&s_temp[0],sizeof(s_temp), &cb))
                 {
                     Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext of >%s<.\n-E-> "),(cl_BrowserDB+i)->tableName);
                     Temp0 += GetExtendedDBErrorMsg(__TFILE__,__LINE__);
@@ -263,7 +255,7 @@ bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
                 break;
             case DB_DATA_TYPE_INTEGER:
                 l_temp = 0;
-                if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB+i)->pColFor->i_sqlDataType,&l_temp,sizeof(l_temp), &cb))
+                if (!db_BrowserDB->GetData((UWORD)(i+1),(SWORD)((cl_BrowserDB+i)->pColFor->i_sqlDataType),&l_temp,sizeof(l_temp), &cb))
                 {
                     Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> "));
                     Temp0 += GetExtendedDBErrorMsg(__TFILE__,__LINE__);
@@ -276,7 +268,7 @@ bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
                 break;
             case DB_DATA_TYPE_FLOAT:
                 f_temp = 0;
-                if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB+i)->pColFor->i_sqlDataType,&f_temp,sizeof(f_temp), &cb))
+                if (!db_BrowserDB->GetData((UWORD)(i+1),(SWORD)((cl_BrowserDB+i)->pColFor->i_sqlDataType),&f_temp,sizeof(f_temp), &cb))
                 {
                     Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> "));
                     Temp0 += GetExtendedDBErrorMsg(__TFILE__,__LINE__);
@@ -289,8 +281,14 @@ bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
                 }
                 break;
             case DB_DATA_TYPE_DATE:
-                t_temp.day = t_temp.month = t_temp.year = t_temp.hour = t_temp.minute = t_temp.second = t_temp.fraction = 0;
-                if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB+i)->pColFor->i_sqlDataType,&t_temp,sizeof(t_temp), &cb))
+                t_temp.day = 0;
+                t_temp.month = 0;
+                t_temp.year = 0;
+                t_temp.hour = 0;
+                t_temp.minute = 0;
+                t_temp.second = 0;
+                t_temp.fraction = 0;
+                if (!db_BrowserDB->GetData((UWORD)(i+1),(SWORD)((cl_BrowserDB+i)->pColFor->i_sqlDataType),&t_temp,sizeof(t_temp), &cb))
                 {
                     Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> "));
                     Temp0 += GetExtendedDBErrorMsg(__TFILE__,__LINE__);
@@ -298,8 +296,8 @@ bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
                 else
                 {
                     // i_Nation =  0 = timestamp , 1=EU, 2=UK, 3=International, 4=US
-                    if (((cl_BrowserDB+i)->pColFor->i_Nation == 0)     ||      // TS  YYYY-MM-DD
-                        ((cl_BrowserDB+i)->pColFor->i_Nation == 3))    // IT  YYYY-MM-DD
+                    if (((cl_BrowserDB+i)->pColFor->i_Nation == 0)    ||    // TS  YYYY-MM-DD
+                        ((cl_BrowserDB+i)->pColFor->i_Nation == 3))     // IT  YYYY-MM-DD
                     {
                         Temp0.Printf((cl_BrowserDB+i)->pColFor->s_Field,t_temp.year,t_temp.month,t_temp.day,
                             t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction);
@@ -312,7 +310,7 @@ bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
                             t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction);
                         wxStrcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
                     }
-                    if ((cl_BrowserDB+i)->pColFor->i_Nation == 3)         // US  MM/DD/YYYY
+                    if ((cl_BrowserDB+i)->pColFor->i_Nation == 3)    // US  MM/DD/YYYY
                     {
                         Temp0.Printf((cl_BrowserDB+i)->pColFor->s_Field,t_temp.month,t_temp.day,t_temp.year,
                             t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction);
@@ -328,7 +326,7 @@ bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
                     wxLogMessage(_("-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? (%d) in Col(%s)"),(cl_BrowserDB+i)->pColFor->i_dbDataType,Temp0.c_str());
                 }
                 else
-                    return TRUE;
+                    return true;
                 Temp0.Printf(_("-E-> unknown Format(%d) - sql(%d)"),(cl_BrowserDB+i)->pColFor->i_dbDataType,(cl_BrowserDB+i)->pColFor->i_sqlDataType);
                 wxStrcpy((cl_BrowserDB+i)->tableName,Temp0.c_str());
                 break;
@@ -336,7 +334,7 @@ bool BrowserDB::OnGetNext(int Cols,int WXUNUSED(Quiet))
         }  // for
     }  // else
 
-    return TRUE;
+    return true;
 }
 
 //----------------------------------------------------------------------------------------
@@ -354,7 +352,7 @@ bool BrowserDB::OnSelect(wxString tb_Name, int Quiet)
         Temp0 += GetExtendedDBErrorMsg(__TFILE__,__LINE__);
         wxLogMessage(Temp0);
         wxMessageBox(_T("-E-> BrowserDB::OnSelect - GetData()"));
-        return FALSE;
+        return false;
     }
     //---------------------------------------------------------------------------------------
     while (db_BrowserDB->GetNext())
@@ -367,16 +365,16 @@ bool BrowserDB::OnSelect(wxString tb_Name, int Quiet)
         Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str());
         Temp0 += GetExtendedDBErrorMsg(__TFILE__,__LINE__);
         wxLogMessage(Temp0);
-        return FALSE;
+        return false;
     }
     //---------------------------------------------------------------------------------------
-    // SetColDefs ( 0,"NAME",    DB_DATA_TYPE_VARCHAR,  Name,     SQL_C_CHAR,          sizeof(Name),    TRUE, TRUE);  // Primary index
+    // SetColDefs ( 0, "NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_WXCHAR, sizeof(Name), true, true);  // Primary index
     //---------------------------------------------------------------------------------------
     if (!Quiet)
     {
         wxLogMessage(_("\n-I-> BrowserDB::OnSelect(%s) Records(%d): End - Time needed : %ld ms"),tb_Name.c_str(),i_Records,sw.Time());
     }
-    return TRUE;
+    return true;
 }
 
 //----------------------------------------------------------------------------------------
@@ -391,13 +389,13 @@ bool BrowserDB::OnExecSql(wxString SQLStmt, int Quiet)
             wxLogMessage(Temp0);
         else
             wxMessageBox(_T("-E-> BrowserDB::OnExecSql - ExecSql()"));
-        return FALSE;
+        return false;
     }
     if (!Quiet)
     {
         // wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End - Time needed : %ld ms"),SQLStmt.c_str(),sw.Time());
     }
-    return TRUE;
+    return true;
 }
 
 //----------------------------------------------------------------------------------------
@@ -425,7 +423,7 @@ wxDbColInf* BrowserDB::OnGetColumns(wxChar *tableName, UWORD numCols, int WXUNUS
         (cl_BrowserDB+i)->pColFor->Format(1,
                                         (cl_BrowserDB+i)->dbDataType,
                                         (cl_BrowserDB+i)->sqlDataType,
-                                        (cl_BrowserDB+i)->columnSize, 
+                                        (cl_BrowserDB+i)->columnLength,
                                         (cl_BrowserDB+i)->decimalDigits);
     }
     return cl_BrowserDB;
@@ -452,10 +450,10 @@ void BrowserDB::PointerToNULL(int Art)
             delete db_BrowserDB;
         }
     }
-    cl_BrowserDB          = NULL;
-    ct_BrowserDB          = NULL;
-    db_BrowserDB          = NULL;
-    p_LogWindow           = NULL;
+    cl_BrowserDB       = NULL;
+    ct_BrowserDB       = NULL;
+    db_BrowserDB       = NULL;
+    p_LogWindow        = NULL;
 }
 
 //----------------------------------------------------------------------------------------
@@ -464,7 +462,7 @@ void BrowserDB::OnFillSqlTyp()
     i_SqlTyp[1]  = SQL_C_BINARY;    s_SqlTyp[1]  = _T("SQL_C_BINARY");
     i_SqlTyp[2]  = SQL_C_BIT;       s_SqlTyp[2]  = _T("SQL_C_BIT");
     i_SqlTyp[3]  = SQL_C_BOOKMARK;  s_SqlTyp[3]  = _T("SQL_C_BOOKMARK");
-    i_SqlTyp[4]  = SQL_C_CHAR;      s_SqlTyp[4]  = _T("SQL_C_CHAR");
+    i_SqlTyp[4]  = SQL_C_WXCHAR;    s_SqlTyp[4]  = _T("SQL_C_WXCHAR");
     i_SqlTyp[5]  = SQL_C_DATE;      s_SqlTyp[5]  = _T("SQL_C_DATE");
     i_SqlTyp[6]  = SQL_C_DEFAULT;   s_SqlTyp[6]  = _T("SQL_C_DEFAULT");
     i_SqlTyp[7]  = SQL_C_DOUBLE;    s_SqlTyp[7]  = _T("SQL_C_DOUBLE");
@@ -484,7 +482,7 @@ void BrowserDB::OnFillSqlTyp()
     i_SqlTyp[21] = SQL_NUMERIC;     s_SqlTyp[21] = _T("SQL_NUMERIC");
     i_SqlTyp[22] = SQL_LONGVARCHAR; s_SqlTyp[22] = _T("SQL_LONGVARCHAR");
     i_SqlTyp[23] = SQL_REAL;        s_SqlTyp[23] = _T("SQL_REAL");
-    i_SqlTyp[0]  = 23;              s_SqlTyp[0]  = _T("");
+    i_SqlTyp[0]  = 23;              s_SqlTyp[0]  = wxEmptyString;
 }
 
 //----------------------------------------------------------------------------------------
@@ -494,6 +492,6 @@ void BrowserDB::OnFilldbTyp()
     i_dbTyp[2] = DB_DATA_TYPE_INTEGER; s_dbTyp[2] = _T("DB_DATA_TYPE_INTEGER");
     i_dbTyp[3] = DB_DATA_TYPE_FLOAT;   s_dbTyp[3] = _T("DB_DATA_TYPE_FLOAT");
     i_dbTyp[4] = DB_DATA_TYPE_DATE;    s_dbTyp[4] = _T("DB_DATA_TYPE_DATE");
-    i_dbTyp[0] = 4;                    s_dbTyp[0] = _T("");
+    i_dbTyp[0] = 4;                    s_dbTyp[0] = wxEmptyString;
 }
 //----------------------------------------------------------------------------------------