X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b5ffecfc985136771bb521074c0f46a07894e62e..33e3914780120847db58ef7a3ce14e31e2f8681f:/demos/dbbrowse/browsedb.cpp diff --git a/demos/dbbrowse/browsedb.cpp b/demos/dbbrowse/browsedb.cpp index 3ee7463cfc..602a074ddb 100644 --- a/demos/dbbrowse/browsedb.cpp +++ b/demos/dbbrowse/browsedb.cpp @@ -6,29 +6,31 @@ // 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 +#pragma implementation +#pragma interface #endif //--------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" //--------------------------------------------------------------------------- #ifdef __BORLANDC__ - #pragma hdrstop +#pragma hdrstop #endif //--------------------------------------------------------------------------- #ifndef WX_PRECOMP - #include "wx/wx.h" +#include "wx/wx.h" #endif //--------------------------------------------------------------------------- #include #include "std.h" +#include //--------------------------------------------------------------------------- // Global structure for holding ODBC connection information // - darf nur einmal im Projekte definiert werden ?? Extra Databasse Klasse ? @@ -38,138 +40,50 @@ extern DbList* WXDLLEXPORT PtrBegDbList; /* from db.cpp, used in getting back //--------------------------------------------------------------------------- char *GetExtendedDBErrorMsg(char *ErrFile, int ErrLine) { - static wxString msg; - wxString tStr; - if (ErrFile || ErrLine) - { - msg += "File: "; - msg += ErrFile; - msg += " Line: "; - tStr.Printf("%d",ErrLine); - msg += tStr.GetData(); + static wxString msg; + wxString tStr; + if (ErrFile || ErrLine) + { + msg += "File: "; + msg += ErrFile; + msg += " Line: "; + tStr.Printf("%d",ErrLine); + msg += tStr.GetData(); + // msg += "\n"; + } + msg.Append ("\nODBC errors:\n"); // msg += "\n"; - } - msg.Append ("\nODBC errors:\n"); - // msg += "\n"; - /* Scan through each database connection displaying - * any ODBC errors that have occured. */ - for (DbList *pDbList = PtrBegDbList; pDbList; pDbList = pDbList->PtrNext) - { - // Skip over any free connections - if (pDbList->Free) - continue; - // Display errors for this connection - for (int i = 0; i < DB_MAX_ERROR_HISTORY; i++) - { - if (pDbList->PtrDb->errorList[i]) - { - msg.Append(pDbList->PtrDb->errorList[i]); - if (strcmp(pDbList->PtrDb->errorList[i],"") != 0) - msg.Append("\n"); - } - } - } - msg += "\n"; - return (char*) (const char*) msg; + /* Scan through each database connection displaying + * any ODBC errors that have occured. */ + for (DbList *pDbList = PtrBegDbList; pDbList; pDbList = pDbList->PtrNext) + { + // Skip over any free connections + if (pDbList->Free) + continue; + // Display errors for this connection + for (int i = 0; i < DB_MAX_ERROR_HISTORY; i++) + { + if (pDbList->PtrDb->errorList[i]) + { + msg.Append(pDbList->PtrDb->errorList[i]); + if (strcmp(pDbList->PtrDb->errorList[i],"") != 0) + msg.Append("\n"); + } + } + } + msg += "\n"; + return (char*) (const char*) msg; } // GetExtendedDBErrorMsg -////////////////////////////////////////////////////////////////////////////////// -// BJO 20000115 : New stuff : dialog to ask for username and password -////////////////////////////////////////////////////////////////////////////////// -class UserDialog : public wxDialog -{ - public: - UserDialog(wxWindow* parent); - virtual ~UserDialog(); - void OnOK(wxCommandEvent& event); - wxString s_UserName, s_Password; - - private: - wxButton *m_OK; - wxStaticText *m_Label1, *m_Label2; - wxTextCtrl *m_UserName, *m_Password; - - - DECLARE_EVENT_TABLE() -}; -//--------------------------------------------------------------------------- -BEGIN_EVENT_TABLE(UserDialog, wxDialog) - EVT_BUTTON(wxID_OK, UserDialog::OnOK) -END_EVENT_TABLE() -//--------------------------------------------------------------------------- -UserDialog::UserDialog(wxWindow *parent): - wxDialog(parent, -1, _("ODBC user"),wxDefaultPosition, wxSize(310, 300),wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE) -{ - wxLayoutConstraints* layout; - SetAutoLayout(TRUE); - //----------------------------------------------- - m_OK = new wxButton(this, wxID_OK, _("Ok")); - layout = new wxLayoutConstraints; - layout->left.SameAs(this, wxLeft, 10); - layout->top.SameAs(this, wxTop,10); - layout->height.AsIs(); - layout->width.Absolute(75); - m_OK->SetConstraints(layout); - - m_Label1 = new wxStaticText(this, -1, _("User name:")); - layout = new wxLayoutConstraints; - layout->left.SameAs(m_OK, wxLeft); - layout->top.SameAs(m_OK, wxBottom, 10); - layout->height.AsIs(); - layout->width.AsIs(); - m_Label1->SetConstraints(layout); - - m_UserName = new wxTextCtrl(this, -1, ""); - layout = new wxLayoutConstraints; - layout->left.SameAs(m_OK, wxLeft); - layout->top.SameAs(m_Label1, wxBottom, 3); - layout->width.AsIs(); - layout->height.AsIs(); - m_UserName->SetConstraints(layout); - - m_Label2 = new wxStaticText(this, -1, _("Password:")); - layout = new wxLayoutConstraints; - layout->left.SameAs(m_OK, wxLeft); - layout->top.SameAs(m_UserName, wxBottom, 10); - layout->height.AsIs(); - layout->width.AsIs(); - m_Label2->SetConstraints(layout); - - m_Password = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD); - layout = new wxLayoutConstraints; - layout->left.SameAs(m_OK, wxLeft); - layout->width.AsIs(); - layout->top.SameAs(m_Label2, wxBottom, 3); - layout->height.AsIs(); - m_Password->SetConstraints(layout); - s_UserName = ""; - s_Password = ""; - - Layout(); -} -//--------------------------------------------------------------------------- -UserDialog::~UserDialog() -{ -} -//--------------------------------------------------------------------------- -void UserDialog::OnOK(wxCommandEvent& WXUNUSED(event)) -{ - strcpy(ConnectInf.Uid, m_UserName->GetValue()); - strcpy(ConnectInf.AuthStr, m_Password->GetValue()); - EndModal(1); -} -////////////////////////////////////////////////////////////////////////////////// -// BJO 20000115 : end of new stuff -////////////////////////////////////////////////////////////////////////////////// //--------------------------------------------------------------------------- BrowserDB::BrowserDB() { - Zeiger_auf_NULL(0); - ODBCSource = ""; // ODBC data source name (created with ODBC Administrator under Win95/NT) - UserName = ""; // database username - must already exist in the data source - Password = ""; // password database username - OnFillSqlTyp(); - OnFilldbTyp(); + Zeiger_auf_NULL(0); + ODBCSource = ""; // ODBC data source name (created with ODBC Administrator under Win95/NT) + UserName = ""; // database username - must already exist in the data source + Password = ""; // password database username + OnFillSqlTyp(); + OnFilldbTyp(); } // BrowserDB Constructor //--------------------------------------------------------------------------- BrowserDB::~BrowserDB() @@ -179,371 +93,386 @@ BrowserDB::~BrowserDB() //-------------------------------------------------------------------------------------------- bool BrowserDB::Initialize(int Quite) { - if (!OnStartDB(Quite)) - { - wxLogMessage(_("\n\n-E-> BrowserDB::OnStartDB(%s) : Failed ! "),ODBCSource.c_str()); - return FALSE; - } - return TRUE; + if (!OnStartDB(Quite)) + { + wxLogMessage(_("\n\n-E-> BrowserDB::OnStartDB(%s) : Failed ! "),ODBCSource.c_str()); + return FALSE; + } + return TRUE; } // BrowserDB:Initialize //-------------------------------------------------------------------------------------------- bool BrowserDB::OnStartDB(int Quite) { - if (!Quite) - wxLogMessage(_("\n-I-> BrowserDB::OnStartDB(%s) : Begin "),ODBCSource.c_str()); - if (db_BrowserDB != NULL) - { - if (!Quite) - wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is allready open.")); - return TRUE; - } - // Initialize the ODBC Environment for Database Operations - if (SQLAllocEnv(&ConnectInf.Henv) != SQL_SUCCESS) - { if (!Quite) - wxLogMessage(_("\n-E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source")); - return FALSE; - } - //--------------------------------------------------------------------------- - // Connect to datasource - //--------------------------- - DlgUser p_Dlg(pDoc->p_MainFrame, "Username and Password", wxPoint(100, 100), wxSize(340, 170)); - p_Dlg.s_DSN = ODBCSource; - p_Dlg.s_User = UserName; - p_Dlg.s_Password = Password; - p_Dlg.OnInit(); - 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; - } - p_Dlg.Destroy(); - //--------------------------- - strcpy(ConnectInf.Dsn, ODBCSource); // ODBC data source name (created with ODBC Administrator under Win95/NT) - strcpy(ConnectInf.Uid, UserName); // database username - must already exist in the data source - strcpy(ConnectInf.AuthStr, Password); // password database username - db_BrowserDB = GetDbConnection(&ConnectInf); - // wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str()); - if (db_BrowserDB == NULL) - { - strcpy(ConnectInf.Dsn, ""); - strcpy(ConnectInf.Uid, ""); - strcpy(ConnectInf.AuthStr, ""); - if (!Quite) - { - 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 "),ODBCSource.c_str()); - } - return FALSE; - } - //-------------------------------------------------------------------------- - if (!Quite) - { - Temp1 = db_BrowserDB->GetDatabaseName(); - Temp2 = db_BrowserDB->GetDataSource(); - wxLogMessage(_("-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"),Temp1.c_str(),Temp2.c_str()); - wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End "),ODBCSource.c_str()); - } - return TRUE; + wxLogMessage(_("\n-I-> BrowserDB::OnStartDB(%s) : Begin "),ODBCSource.c_str()); + if (db_BrowserDB != NULL) + { + if (!Quite) + wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is allready open.")); + return TRUE; + } + // Initialize the ODBC Environment for Database Operations + if (SQLAllocEnv(&ConnectInf.Henv) != SQL_SUCCESS) + { + if (!Quite) + wxLogMessage(_("\n-E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source")); + return FALSE; + } + //--------------------------------------------------------------------------- + // Connect to datasource + //--------------------------- + DlgUser *p_Dlg = new DlgUser(pDoc->p_MainFrame, "Username and Password"); + p_Dlg->s_DSN = ODBCSource; + p_Dlg->s_User = UserName; + p_Dlg->s_Password = Password; + p_Dlg->OnInit(); + p_Dlg->Fit(); + + 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; + } + //p_Dlg.Destroy(); + delete p_Dlg; + + if (OK) + { + //--------------------------- + strcpy(ConnectInf.Dsn, ODBCSource); // ODBC data source name (created with ODBC Administrator under Win95/NT) + strcpy(ConnectInf.Uid, UserName); // database username - must already exist in the data source + strcpy(ConnectInf.AuthStr, Password); // password database username + db_BrowserDB = GetDbConnection(&ConnectInf); + // wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str()); + if (db_BrowserDB == NULL) + { + strcpy(ConnectInf.Dsn, ""); + strcpy(ConnectInf.Uid, ""); + strcpy(ConnectInf.AuthStr, ""); + if (!Quite) + { + 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 "),ODBCSource.c_str()); + } + return FALSE; + } + //-------------------------------------------------------------------------- + if (!Quite) + { + Temp1 = db_BrowserDB->GetDatabaseName(); + Temp2 = db_BrowserDB->GetDataSource(); + wxLogMessage(_("-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName(%s) ; DataSource(%s)"),Temp1.c_str(),Temp2.c_str()); + wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End "),ODBCSource.c_str()); + } + return TRUE; + } else return FALSE; } //-------------------------------------------------------------------------------------------- bool BrowserDB::OnCloseDB(int Quite) { - if (!Quite) - wxLogMessage(_("-I-> BrowserDB::OnCloseDB() : Begin ")); - if (db_BrowserDB) - { - db_BrowserDB->Close(); - FreeDbConnection(db_BrowserDB); - - // Free Environment Handle that ODBC uses - if (SQLFreeEnv(&ConnectInf.Henv) != SQL_SUCCESS) - { - // Error freeing environment handle - } - db_BrowserDB = NULL; - } - if (!Quite) - wxLogMessage(_("\n-I-> BrowserDB::OnCloseDB() : End ")); - return TRUE; + if (!Quite) + wxLogMessage(_("-I-> BrowserDB::OnCloseDB() : Begin ")); + if (db_BrowserDB) + { + db_BrowserDB->Close(); + FreeDbConnection(db_BrowserDB); + + // Free Environment Handle that ODBC uses + if (SQLFreeEnv(&ConnectInf.Henv) != SQL_SUCCESS) + { + // Error freeing environment handle + } + db_BrowserDB = NULL; + } + if (!Quite) + wxLogMessage(_("\n-I-> BrowserDB::OnCloseDB() : End ")); + return TRUE; } //---------------------------------------------------------------------------------------- bool BrowserDB::OnGetNext(int Cols,int Quite) { - SDWORD cb; - int i_dbDataType; - int i=0; - char s_temp[1024+1]; - long l_temp; - double f_temp; - int AnzError=0; - TIMESTAMP_STRUCT t_temp; - wxString Temp0; - //----------------------------- - if (!db_BrowserDB->GetNext()) - { - return FALSE; - Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext \n-E-> ")); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxLogMessage(Temp0); - wxMessageBox(Temp0); - } - else - { - for (i=0;itableName,"-E->"); - i_dbDataType = (cl_BrowserDB->pColFor+i)->i_dbDataType; - if (i_dbDataType == 0) // Filter unsupported dbDataTypes - { - if (((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_VARCHAR) || ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_LONGVARCHAR)) - i_dbDataType = DB_DATA_TYPE_VARCHAR; - if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DATE) - i_dbDataType = DB_DATA_TYPE_DATE; - if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_BIT) - i_dbDataType = DB_DATA_TYPE_INTEGER; - if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_NUMERIC) - i_dbDataType = DB_DATA_TYPE_VARCHAR; - if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_REAL) - i_dbDataType = DB_DATA_TYPE_FLOAT; - } - if ((i_dbDataType == DB_DATA_TYPE_INTEGER) && ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DOUBLE)) - { // DBASE Numeric - i_dbDataType = DB_DATA_TYPE_FLOAT; - } - switch(i_dbDataType) - { - case DB_DATA_TYPE_VARCHAR: - strcpy(s_temp,""); - if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_dbDataType,&s_temp,sizeof(s_temp), &cb)) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext of >%s<.\n-E-> "),(cl_BrowserDB+i)->tableName); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxLogMessage(Temp0); - } - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,s_temp); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - break; - case DB_DATA_TYPE_INTEGER: - l_temp = 0; - if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&l_temp,sizeof(l_temp), &cb)) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - } - else - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,l_temp); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - break; - case DB_DATA_TYPE_FLOAT: - f_temp = 0; - if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&f_temp,sizeof(f_temp), &cb)) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(Temp0); - } - else - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,f_temp); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - 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->pColFor+i)->i_sqlDataType,&t_temp,sizeof(t_temp), &cb)) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - } - else - { - // i_Nation = 0 = timestamp , 1=EU, 2=UK, 3=International, 4=US - if (((cl_BrowserDB->pColFor+i)->i_Nation == 0) || // TS YYYY-MM-DD - ((cl_BrowserDB->pColFor+i)->i_Nation == 3)) // IT YYYY-MM-DD - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.year,t_temp.month,t_temp.day, + SDWORD cb; + int i_dbDataType; + int i=0; + char s_temp[1024+1]; + long l_temp; + double f_temp; + int AnzError=0; + TIMESTAMP_STRUCT t_temp; + wxString Temp0; + //----------------------------- + if (!db_BrowserDB->GetNext()) + { + return FALSE; + Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext \n-E-> ")); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + wxLogMessage(Temp0); + wxMessageBox(Temp0); + } + else + { + for (i=0;itableName,"-E->"); + i_dbDataType = (cl_BrowserDB->pColFor+i)->i_dbDataType; + if (i_dbDataType == 0) // Filter unsupported dbDataTypes + { + if (((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_VARCHAR) || ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_LONGVARCHAR)) + i_dbDataType = DB_DATA_TYPE_VARCHAR; + if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DATE) + i_dbDataType = DB_DATA_TYPE_DATE; + if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_BIT) + i_dbDataType = DB_DATA_TYPE_INTEGER; + if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_NUMERIC) + i_dbDataType = DB_DATA_TYPE_VARCHAR; + if ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_REAL) + i_dbDataType = DB_DATA_TYPE_FLOAT; + } + if ((i_dbDataType == DB_DATA_TYPE_INTEGER) && ((cl_BrowserDB->pColFor+i)->i_sqlDataType == SQL_C_DOUBLE)) + { // DBASE Numeric + i_dbDataType = DB_DATA_TYPE_FLOAT; + } + switch(i_dbDataType) + { + case DB_DATA_TYPE_VARCHAR: + strcpy(s_temp,""); + if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_dbDataType,&s_temp,sizeof(s_temp), &cb)) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnGetNext - ODBC-Error with GetNext of >%s<.\n-E-> "),(cl_BrowserDB+i)->tableName); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + wxLogMessage(Temp0); + } + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,s_temp); + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + break; + case DB_DATA_TYPE_INTEGER: + l_temp = 0; + if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&l_temp,sizeof(l_temp), &cb)) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + } + else + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,l_temp); + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + break; + case DB_DATA_TYPE_FLOAT: + f_temp = 0; + if (!db_BrowserDB->GetData(i+1,(cl_BrowserDB->pColFor+i)->i_sqlDataType,&f_temp,sizeof(f_temp), &cb)) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + wxMessageBox(Temp0); + } + else + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,f_temp); + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + 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->pColFor+i)->i_sqlDataType,&t_temp,sizeof(t_temp), &cb)) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n-E-> ")); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + } + else + { + // i_Nation = 0 = timestamp , 1=EU, 2=UK, 3=International, 4=US + if (((cl_BrowserDB->pColFor+i)->i_Nation == 0) || // TS YYYY-MM-DD + ((cl_BrowserDB->pColFor+i)->i_Nation == 3)) // IT YYYY-MM-DD + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.year,t_temp.month,t_temp.day, t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - if ( ((cl_BrowserDB->pColFor+i)->i_Nation == 1) || // EU DD.MM.YYYY - ((cl_BrowserDB->pColFor+i)->i_Nation == 2)) // UK DD/MM/YYYY - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.day,t_temp.month,t_temp.year, + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + if ( ((cl_BrowserDB->pColFor+i)->i_Nation == 1) || // EU DD.MM.YYYY + ((cl_BrowserDB->pColFor+i)->i_Nation == 2)) // UK DD/MM/YYYY + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.day,t_temp.month,t_temp.year, t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - if ((cl_BrowserDB->pColFor+i)->i_Nation == 3) // US MM/DD/YYYY - { - Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.month,t_temp.day,t_temp.year, + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + if ((cl_BrowserDB->pColFor+i)->i_Nation == 3) // US MM/DD/YYYY + { + Temp0.Printf((cl_BrowserDB->pColFor+i)->s_Field,t_temp.month,t_temp.day,t_temp.year, t_temp.hour, t_temp.minute, t_temp.second, t_temp.fraction); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - } - } - break; - default: - AnzError++; - if (AnzError <= 100) - { - Temp0 = (cl_BrowserDB+i)->colName; - wxLogMessage(_("-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? (%d) in Col(%s)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,Temp0.c_str()); - } - else - return TRUE; - Temp0.Printf(_("-E-> unknown Format(%d) - sql(%d)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,(cl_BrowserDB->pColFor+i)->i_sqlDataType); - strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); - break; - }; - } - } - // wxLogMessage("-E-> BrowserDB::OnGetNext - End"); - return TRUE; + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + } + } + break; + default: + AnzError++; + if (AnzError <= 100) + { + Temp0 = (cl_BrowserDB+i)->colName; + wxLogMessage(_("-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? (%d) in Col(%s)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,Temp0.c_str()); + } + else + return TRUE; + Temp0.Printf(_("-E-> unknown Format(%d) - sql(%d)"),(cl_BrowserDB->pColFor+i)->i_dbDataType,(cl_BrowserDB->pColFor+i)->i_sqlDataType); + strcpy((cl_BrowserDB+i)->tableName,Temp0.c_str()); + break; + }; + } + } + // wxLogMessage("-E-> BrowserDB::OnGetNext - End"); + return TRUE; } //---------------------------------------------------------------------------------------- bool BrowserDB::OnSelect(wxString tb_Name, int Quite) { - wxString SQLStmt; - i_Records = 0; - //-------------------------------------------------------------------------- - SQLStmt.sprintf("SELECT * FROM %s",tb_Name.c_str()); - if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str()); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxLogMessage(Temp0); - wxMessageBox("-E-> BrowserDB::OnSelect - GetData()"); - return FALSE; - } - //-------------------------------------------------------------------------- - while (db_BrowserDB->GetNext()) - { - i_Records++; - } - //-------------------------------------------------------------------------- - if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str()); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxLogMessage(Temp0); - return FALSE; - } - //-------------------------------------------------------------------------- - // SetColDefs ( 0,"NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_CHAR, sizeof(Name), TRUE, TRUE); // Primary index - //-------------------------------------------------------------------------- - if (!Quite) - { - wxLogMessage(_("\n-I-> BrowserDB::OnSelect(%s) Records(%d): End "),tb_Name.c_str(),i_Records); - } - return TRUE; + wxString SQLStmt; + i_Records = 0; + //-------------------------------------------------------------------------- + SQLStmt.sprintf("SELECT * FROM %s",tb_Name.c_str()); + if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str()); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + wxLogMessage(Temp0); + wxMessageBox("-E-> BrowserDB::OnSelect - GetData()"); + return FALSE; + } + //-------------------------------------------------------------------------- + while (db_BrowserDB->GetNext()) + { + i_Records++; + } + //-------------------------------------------------------------------------- + if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of >%s<.\n-E-> "),tb_Name.c_str()); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + wxLogMessage(Temp0); + return FALSE; + } + //-------------------------------------------------------------------------- + // SetColDefs ( 0,"NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_CHAR, sizeof(Name), TRUE, TRUE); // Primary index + //-------------------------------------------------------------------------- + if (!Quite) + { + wxLogMessage(_("\n-I-> BrowserDB::OnSelect(%s) Records(%d): End "),tb_Name.c_str(),i_Records); + } + return TRUE; } //---------------------------------------------------------------------------------------- bool BrowserDB::OnExecSql(wxString SQLStmt, int Quite) { - //-------------------------------------------------------------------------- - if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) - { - Temp0.Printf(_("\n-E-> BrowserDB::OnExecSQL - ODBC-Error with ExecSql of >%s<.\n-E-> "),SQLStmt.c_str()); - Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + //-------------------------------------------------------------------------- + if (!db_BrowserDB->ExecSql((char *)(SQLStmt.GetData()))) + { + Temp0.Printf(_("\n-E-> BrowserDB::OnExecSQL - ODBC-Error with ExecSql of >%s<.\n-E-> "),SQLStmt.c_str()); + Temp0 += GetExtendedDBErrorMsg(__FILE__,__LINE__); + if (!Quite) + wxLogMessage(Temp0); + else + wxMessageBox("-E-> BrowserDB::OnExecSql - ExecSql()"); + return FALSE; + } if (!Quite) - wxLogMessage(Temp0); - else - wxMessageBox("-E-> BrowserDB::OnExecSql - ExecSql()"); - return FALSE; - } - if (!Quite) - { - // wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End "),SQLStmt.c_str()); - } - return TRUE; + { + // wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End "),SQLStmt.c_str()); + } + return TRUE; } //---------------------------------------------------------------------------------------- wxDbInf* BrowserDB::OnGetCatalog(int Quite) { - char UName[255]; - strcpy(UName,UserName); - ct_BrowserDB = db_BrowserDB->GetCatalog(UName); - return ct_BrowserDB; + char UName[255]; + strcpy(UName,UserName); + ct_BrowserDB = db_BrowserDB->GetCatalog(UName); + return ct_BrowserDB; } //---------------------------------------------------------------------------------------- wxColInf* BrowserDB::OnGetColumns(char *tableName, int numCols,int Quite) { - char UName[255]; - int i; - strcpy(UName,UserName); - cl_BrowserDB = db_BrowserDB->GetColumns(tableName,&numCols,UName); - cl_BrowserDB->pColFor = new wxColFor[numCols]; - for (i=0;ipColFor+i)->Format(1,(cl_BrowserDB+i)->dbDataType,(cl_BrowserDB+i)->sqlDataType, - (cl_BrowserDB+i)->columnSize, (cl_BrowserDB+i)->decimalDigits); - } - return cl_BrowserDB; + char UName[255]; + int i; + strcpy(UName,UserName); + cl_BrowserDB = db_BrowserDB->GetColumns(tableName,&numCols,UName); + cl_BrowserDB->pColFor = new wxColFor[numCols]; + for (i=0;ipColFor+i)->Format(1,(cl_BrowserDB+i)->dbDataType,(cl_BrowserDB+i)->sqlDataType, + (cl_BrowserDB+i)->columnSize, (cl_BrowserDB+i)->decimalDigits); + } + return cl_BrowserDB; } //---------------------------------------------------------------------------------------- void BrowserDB::Zeiger_auf_NULL(int Art) { - if (Art == 1) // Löschen - { - if (cl_BrowserDB != NULL) - { // Destroy the memory - delete [] cl_BrowserDB; - } - if (ct_BrowserDB != NULL) - { // Destroy the memory - delete [] ct_BrowserDB; - } - if (db_BrowserDB != NULL) - { - db_BrowserDB->CommitTrans(); - db_BrowserDB->Close(); - CloseDbConnections(); - delete db_BrowserDB; - } - } - cl_BrowserDB = NULL; - ct_BrowserDB = NULL; - db_BrowserDB = NULL; - p_LogWindow = NULL; + if (Art == 1) // Löschen + { + if (cl_BrowserDB != NULL) + { // Destroy the memory + delete [] cl_BrowserDB; + } + if (ct_BrowserDB != NULL) + { // Destroy the memory + delete [] ct_BrowserDB; + } + if (db_BrowserDB != NULL) + { + db_BrowserDB->CommitTrans(); + db_BrowserDB->Close(); + CloseDbConnections(); + delete db_BrowserDB; + } + } + cl_BrowserDB = NULL; + ct_BrowserDB = NULL; + db_BrowserDB = NULL; + p_LogWindow = NULL; } //---------------------------------------------------------------------------------------- void BrowserDB::OnFillSqlTyp() { - i_SqlTyp[1] = SQL_C_BINARY; s_SqlTyp[1] = "SQL_C_BINARY"; - i_SqlTyp[2] = SQL_C_BIT; s_SqlTyp[2] = "SQL_C_BIT"; - i_SqlTyp[3] = SQL_C_BOOKMARK; s_SqlTyp[3] = "SQL_C_BOOKMARK"; - i_SqlTyp[4] = SQL_C_CHAR; s_SqlTyp[4] = "SQL_C_CHAR"; - i_SqlTyp[5] = SQL_C_DATE; s_SqlTyp[5] = "SQL_C_DATE"; - i_SqlTyp[6] = SQL_C_DEFAULT; s_SqlTyp[6] = "SQL_C_DEFAULT"; - i_SqlTyp[7] = SQL_C_DOUBLE; s_SqlTyp[7] = "SQL_C_DOUBLE"; - i_SqlTyp[8] = SQL_C_FLOAT; s_SqlTyp[8] = "SQL_C_FLOAT"; - i_SqlTyp[9] = SQL_C_LONG; s_SqlTyp[9] = "SQL_C_LONG"; - i_SqlTyp[10] = SQL_C_SHORT; s_SqlTyp[10] = "SQL_C_SHORT"; - i_SqlTyp[11] = SQL_C_SLONG; s_SqlTyp[11] = "SQL_C_SLONG"; - i_SqlTyp[12] = SQL_C_SSHORT; s_SqlTyp[12] = "SQL_C_SSHORT"; - i_SqlTyp[13] = SQL_C_STINYINT; s_SqlTyp[13] = "SQL_C_STINYINT"; - i_SqlTyp[14] = SQL_C_TIME; s_SqlTyp[14] = "SQL_C_TIME"; - i_SqlTyp[15] = SQL_C_TIMESTAMP; s_SqlTyp[15] = "SQL_C_TIMESTAMP"; - i_SqlTyp[16] = SQL_C_TINYINT; s_SqlTyp[16] = "SQL_C_TINYINT"; - i_SqlTyp[17] = SQL_C_ULONG; s_SqlTyp[17] = "SQL_C_ULONG"; - i_SqlTyp[18] = SQL_C_USHORT; s_SqlTyp[18] = "SQL_C_USHORT"; - i_SqlTyp[19] = SQL_C_UTINYINT; s_SqlTyp[19] = "SQL_C_UTINYINT"; - i_SqlTyp[20] = SQL_VARCHAR; s_SqlTyp[20] = "SQL_VARCHAR"; - i_SqlTyp[21] = SQL_NUMERIC; s_SqlTyp[21] = "SQL_NUMERIC"; - i_SqlTyp[22] = SQL_LONGVARCHAR; s_SqlTyp[22] = "SQL_LONGVARCHAR"; - i_SqlTyp[23] = SQL_REAL; s_SqlTyp[23] = "SQL_REAL"; - i_SqlTyp[0] = 23; s_SqlTyp[0] = ""; + i_SqlTyp[1] = SQL_C_BINARY; s_SqlTyp[1] = "SQL_C_BINARY"; + i_SqlTyp[2] = SQL_C_BIT; s_SqlTyp[2] = "SQL_C_BIT"; + i_SqlTyp[3] = SQL_C_BOOKMARK; s_SqlTyp[3] = "SQL_C_BOOKMARK"; + i_SqlTyp[4] = SQL_C_CHAR; s_SqlTyp[4] = "SQL_C_CHAR"; + i_SqlTyp[5] = SQL_C_DATE; s_SqlTyp[5] = "SQL_C_DATE"; + i_SqlTyp[6] = SQL_C_DEFAULT; s_SqlTyp[6] = "SQL_C_DEFAULT"; + i_SqlTyp[7] = SQL_C_DOUBLE; s_SqlTyp[7] = "SQL_C_DOUBLE"; + i_SqlTyp[8] = SQL_C_FLOAT; s_SqlTyp[8] = "SQL_C_FLOAT"; + i_SqlTyp[9] = SQL_C_LONG; s_SqlTyp[9] = "SQL_C_LONG"; + i_SqlTyp[10] = SQL_C_SHORT; s_SqlTyp[10] = "SQL_C_SHORT"; + i_SqlTyp[11] = SQL_C_SLONG; s_SqlTyp[11] = "SQL_C_SLONG"; + i_SqlTyp[12] = SQL_C_SSHORT; s_SqlTyp[12] = "SQL_C_SSHORT"; + i_SqlTyp[13] = SQL_C_STINYINT; s_SqlTyp[13] = "SQL_C_STINYINT"; + i_SqlTyp[14] = SQL_C_TIME; s_SqlTyp[14] = "SQL_C_TIME"; + i_SqlTyp[15] = SQL_C_TIMESTAMP; s_SqlTyp[15] = "SQL_C_TIMESTAMP"; + i_SqlTyp[16] = SQL_C_TINYINT; s_SqlTyp[16] = "SQL_C_TINYINT"; + i_SqlTyp[17] = SQL_C_ULONG; s_SqlTyp[17] = "SQL_C_ULONG"; + i_SqlTyp[18] = SQL_C_USHORT; s_SqlTyp[18] = "SQL_C_USHORT"; + i_SqlTyp[19] = SQL_C_UTINYINT; s_SqlTyp[19] = "SQL_C_UTINYINT"; + i_SqlTyp[20] = SQL_VARCHAR; s_SqlTyp[20] = "SQL_VARCHAR"; + i_SqlTyp[21] = SQL_NUMERIC; s_SqlTyp[21] = "SQL_NUMERIC"; + i_SqlTyp[22] = SQL_LONGVARCHAR; s_SqlTyp[22] = "SQL_LONGVARCHAR"; + i_SqlTyp[23] = SQL_REAL; s_SqlTyp[23] = "SQL_REAL"; + i_SqlTyp[0] = 23; s_SqlTyp[0] = ""; } //---------------------------------------------------------------------------------------- void BrowserDB::OnFilldbTyp() { - i_dbTyp[1] = DB_DATA_TYPE_VARCHAR; s_dbTyp[1] = "DB_DATA_TYPE_VARCHAR"; - i_dbTyp[2] = DB_DATA_TYPE_INTEGER; s_dbTyp[2] = "DB_DATA_TYPE_INTEGER"; - i_dbTyp[3] = DB_DATA_TYPE_FLOAT; s_dbTyp[3] = "DB_DATA_TYPE_FLOAT"; - i_dbTyp[4] = DB_DATA_TYPE_DATE; s_dbTyp[4] = "DB_DATA_TYPE_DATE"; - i_dbTyp[0] = 4; s_dbTyp[0] = ""; + i_dbTyp[1] = DB_DATA_TYPE_VARCHAR; s_dbTyp[1] = "DB_DATA_TYPE_VARCHAR"; + i_dbTyp[2] = DB_DATA_TYPE_INTEGER; s_dbTyp[2] = "DB_DATA_TYPE_INTEGER"; + i_dbTyp[3] = DB_DATA_TYPE_FLOAT; s_dbTyp[3] = "DB_DATA_TYPE_FLOAT"; + i_dbTyp[4] = DB_DATA_TYPE_DATE; s_dbTyp[4] = "DB_DATA_TYPE_DATE"; + i_dbTyp[0] = 4; s_dbTyp[0] = ""; } //---------------------------------------------------------------------------------------- + + + + + +