]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/db/listdb.cpp
remove ODBC and DBgrid libraries
[wxWidgets.git] / samples / db / listdb.cpp
diff --git a/samples/db/listdb.cpp b/samples/db/listdb.cpp
deleted file mode 100644 (file)
index 07ced21..0000000
+++ /dev/null
@@ -1,518 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////
-// Name:        listdb.cpp
-// Purpose:     Data table lookup listbox code
-// Author:      George Tasker/Doug Card
-// Modified by:
-// Created:     1996
-// RCS-ID:      $Id$
-// Copyright:   (c) 1996 Remstar International, Inc.
-// Licence:     wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-/*
-// SYNOPSIS START
-
-    Member functions for the classes defined in LISTDB.H
-
-     This class is used to present a generic ListBox lookup window for
-     use with any of the object creation/selection choice widgets.   This
-     dialog window will present a (possibly) scrolling list of values
-     that come from a data table source.  Based on the object type passed
-     in the constructor, a ListBox is built to present the user with a
-     single selection listbox.
-
-     The string selected from the list box is stored in the Global variable
-     "ListDB_Selection", and will remain set until another interation of this
-     routine is called.
-
-     For each object (database) type that is to be used, an overridden
-     constructor should be written to appropriately link to the proper
-     data table/object for building the list.
-
-    The data table record access is all handled through the routines
-    in this module, interfacing with the methods defined in wxDbTable.
-
-     All objects which use data table access must be initialized and
-     have opened the table prior to passing them in the dialog
-     constructor, and the 'where' query should already have been set
-     and performed before creating this dialog instance.
-
-// SYNOPSIS STOP
-*/
-
-#include  "wx/wxprec.h"
-
-#ifdef    __BORLANDC__
-#pragma hdrstop
-#endif  //__BORLANDC__
-
-#ifndef WX_PRECOMP
-#include  "wx/wx.h"
-#endif //WX_PRECOMP
-
-#include "wx/dbtable.h"
-
-extern wxDbList WXDLLEXPORT *PtrBegDbList;    /* from db.cpp, used in getting back error results from db connections */
-
-#include "listdb.h"
-//#include "dbtest.h"
-
-// Used for passing the selected listbox selection back to the calling
-// routine.  This variable must be declared as 'extern' in the calling
-// source module
-wxChar ListDB_Selection[LOOKUP_COL_LEN+1];
-
-// If the listbox contains two columns of data, the second column is
-// returned in this variable.
-wxChar ListDB_Selection2[LOOKUP_COL_LEN+1];
-
-// Constants
-const int LISTDB_NO_SPACES_BETWEEN_COLS = 3;
-
-
-extern wxApp *DatabaseDemoApp;
-
-
-/*
- * This function will return the exact string(s) from the database engine
- * indicating all error conditions which have just occurred during the
- * last call to the database engine.
- *
- * This demo uses the returned string by displaying it in a wxMessageBox.  The
- * formatting therefore is not the greatest, but this is just a demo, not a
- * finished product.  :-) gt
- *
- * NOTE: The value returned by this function is for temporary use only and
- *       should be copied for long term use
- */
-wxString GetExtendedDBErrorMsg2(wxDb *pDb, wxChar *ErrFile, int ErrLine)
-{
-    static wxString msg;
-    msg = wxT("");
-
-    wxString tStr;
-
-    if (ErrFile || ErrLine)
-    {
-        msg += wxT("File: ");
-        msg += ErrFile;
-        msg += wxT("   Line: ");
-        tStr.Printf(wxT("%d"),ErrLine);
-        msg += tStr.c_str();
-        msg += wxT("\n");
-    }
-
-    msg.Append (wxT("\nODBC errors:\n"));
-    msg += wxT("\n");
-
-    // Display errors for this connection
-    int i;
-    for (i = 0; i < DB_MAX_ERROR_HISTORY; i++)
-    {
-        if (pDb->errorList[i])
-        {
-            msg.Append(pDb->errorList[i]);
-            if (wxStrcmp(pDb->errorList[i],wxT("")) != 0)
-                msg.Append(wxT("\n"));
-            // Clear the errmsg buffer so the next error will not
-            // end up showing the previous error that have occurred
-            wxStrcpy(pDb->errorList[i],wxT(""));
-        }
-    }
-    msg += wxT("\n");
-
-    return msg;
-}  // GetExtendedDBErrorMsg
-
-
-// Clookup constructor
-Clookup::Clookup(wxString tblName, wxString colName, wxDb *pDb, const wxString &defDir)
-   : wxDbTable(pDb, tblName, 1, (const wxString &)wxEmptyString, !wxDB_QUERY_ONLY,
-               defDir)
-{
-
-    SetColDefs (0, colName, DB_DATA_TYPE_VARCHAR, lookupCol, SQL_C_WXCHAR, LOOKUP_COL_LEN+1, false, false);
-
-}  // Clookup()
-
-
-// Clookup2 constructor
-Clookup2::Clookup2(wxString tblName, wxString colName1, wxString colName2,
-                   wxDb *pDb, const wxString &defDir)
-   : wxDbTable(pDb, tblName, (UWORD)(1 + (wxStrlen(colName2) > 0)), (const wxString &)wxEmptyString,
-               !wxDB_QUERY_ONLY, defDir)
-{
-    wxASSERT(pDb);
-    wxASSERT(tblName);
-    wxASSERT(colName1);
-    wxASSERT(colName2);
-
-    int i = 0;
-
-    SetColDefs ((UWORD)i, colName1, DB_DATA_TYPE_VARCHAR, lookupCol1, SQL_C_WXCHAR, LOOKUP_COL_LEN+1, false, false);
-
-    if (wxStrlen(colName2) > 0)
-        SetColDefs ((UWORD)(++i), colName2, DB_DATA_TYPE_VARCHAR, lookupCol2, SQL_C_WXCHAR, LOOKUP_COL_LEN+1, false, false);
-
-}  // Clookup2()
-
-
-BEGIN_EVENT_TABLE(ClookUpDlg, wxDialog)
-    EVT_BUTTON(LOOKUP_DIALOG_OK,  ClookUpDlg::OnButton)
-    EVT_BUTTON(LOOKUP_DIALOG_CANCEL,  ClookUpDlg::OnButton)
-    EVT_CLOSE(ClookUpDlg::OnClose)
-    EVT_LISTBOX_DCLICK(LOOKUP_DIALOG_SELECT,  ClookUpDlg::OnDClick)
-END_EVENT_TABLE()
-
-
-// This is a generic lookup constructor that will work with any table and any column
-ClookUpDlg::ClookUpDlg(wxWindow *parent, const wxString &windowTitle, const wxString &tableName,
-                       const wxString &colName, const wxString &where, const wxString &orderBy,
-                       wxDb *pDb, const wxString &defDir)
-   : wxDialog (parent, LOOKUP_DIALOG, wxT("Select..."), wxDefaultPosition, wxSize(400, 290))
-{
-    wxBeginBusyCursor();
-
-    wxStrcpy(ListDB_Selection,wxT(""));
-    widgetPtrsSet = false;
-    lookup  = 0;
-    lookup2 = 0;
-    noDisplayCols = 1;
-    col1Len = 0;
-
-    pLookUpSelectList = new wxListBox(this, LOOKUP_DIALOG_SELECT,                  wxPoint(  5,  15), wxSize(384, 195), 0, 0, wxLB_SINGLE|wxLB_ALWAYS_SB, wxDefaultValidator, wxT("LookUpSelectList"));
-    pLookUpOkBtn      = new wxButton(this,  LOOKUP_DIALOG_OK,      wxT("&Ok"),     wxPoint(113, 222), wxSize( 70,  35), 0, wxDefaultValidator, wxT("LookUpOkBtn"));
-    pLookUpCancelBtn  = new wxButton(this,  LOOKUP_DIALOG_CANCEL,  wxT("C&ancel"), wxPoint(212, 222), wxSize( 70,  35), 0, wxDefaultValidator, wxT("LookUpCancelBtn"));
-
-    widgetPtrsSet = true;
-
-    // Query the lookup table and display the result set
-    lookup = new Clookup(tableName, colName, pDb, defDir);
-    if (!lookup)
-    {
-        wxMessageBox(wxT("Error allocating memory for 'Clookup' object."),wxT("Error..."));
-        Close();
-        return;
-    }
-
-    if (!lookup->Open())
-    {
-        wxString tStr;
-        tStr.Printf(wxT("Unable to open the table '%s'."), tableName.c_str());
-        wxMessageBox(wxDbLogExtendedErrorMsg(tStr.c_str(),lookup->GetDb(),__TFILE__,__LINE__),
-                    wxT("ODBC Error..."),wxOK | wxICON_EXCLAMATION);
-
-        Close();
-        return;
-    }
-
-    lookup->SetOrderByClause(orderBy);
-    lookup->SetWhereClause(where);
-    if (!lookup->Query())
-    {
-        wxString tStr;
-        tStr = wxT("ODBC error during Query()\n\n");
-        wxMessageBox(wxDbLogExtendedErrorMsg(tStr.c_str(),lookup->GetDb(),__TFILE__,__LINE__),
-                    wxT("ODBC Error..."),wxOK | wxICON_EXCLAMATION);
-
-        Close();
-        return;
-    }
-
-    // Fill in the list box from the query result set
-    while (lookup->GetNext())
-        pLookUpSelectList->Append(lookup->lookupCol);
-
-    // Make the OK activate by pressing Enter
-    if (pLookUpSelectList->GetCount())
-    {
-        pLookUpSelectList->SetSelection(0);
-        pLookUpOkBtn->SetDefault();
-    }
-    else
-    {
-        pLookUpCancelBtn->SetDefault();
-        pLookUpOkBtn->Enable(false);
-    }
-
-    // Display the dialog window
-    SetTitle(windowTitle);
-    Centre(wxBOTH);
-    wxEndBusyCursor();
-    ShowModal();
-
-}  // Generic lookup constructor
-
-
-//
-// This is a generic lookup constructor that will work with any table and any column.
-// It extends the capabilites of the lookup dialog in the following ways:
-//
-//    1) 2 columns rather than one
-// 2) The ability to select DISTINCT column values
-//
-// Only set distinctValues equal to true if necessary.  In many cases, the constraints
-// of the index(es) will enforce this uniqueness.  Selecting DISTINCT does require
-// overhead by the database to ensure that all values returned are distinct.  Therefore,
-// use this ONLY when you need it.
-//
-// For complicated queries, you can pass in the sql select statement.  This would be
-// necessary if joins are involved since by default both columns must come from the
-// same table.
-//
-// If you do query by sql statement, you must pass in the maximum length of column1,
-// since it cannot be derived when you query using your own sql statement.
-//
-// The optional database connection can be used if you'd like the lookup class
-// to use a database pointer other than wxGetApp().READONLY_DB.  This is necessary if
-// records are being saved, but not committed to the db, yet should be included
-// in the lookup window.
-//
-ClookUpDlg::ClookUpDlg(wxWindow *parent, const wxString &windowTitle, const wxString &tableName,
-                       const wxString &dispCol1, const wxString &dispCol2,
-                       const wxString &where, const wxString &orderBy,
-                       wxDb *pDb, const wxString &defDir, bool distinctValues,
-                       const wxString &selectStmt, int maxLenCol1, bool allowOk)
-   : wxDialog (parent, LOOKUP_DIALOG, wxT("Select..."), wxDefaultPosition, wxSize(400, 290))
-{
-    wxBeginBusyCursor();
-
-    wxStrcpy(ListDB_Selection,wxT(""));
-    wxStrcpy(ListDB_Selection2,wxT(""));
-    widgetPtrsSet = false;
-    lookup  = 0;
-    lookup2 = 0;
-
-    noDisplayCols = (dispCol2.Length() == 0 ? 1 : 2);
-    col1Len = 0;
-
-    wxFont fixedFont(12, wxMODERN, wxNORMAL, wxNORMAL);
-
-    // this is done with fixed font so that the second column (if any) will be left
-    // justified in the second column
-    pLookUpSelectList        = new wxListBox(this, LOOKUP_DIALOG_SELECT, wxPoint(5, 15), wxSize(384, 195), 0, 0, wxLB_SINGLE|wxLB_ALWAYS_SB, wxDefaultValidator, wxT("LookUpSelectList"));
-
-    pLookUpSelectList->SetFont(fixedFont);
-
-    pLookUpOkBtn            = new wxButton(this, LOOKUP_DIALOG_OK,      wxT("&Ok"),        wxPoint(113, 222), wxSize(70, 35), 0, wxDefaultValidator, wxT("LookUpOkBtn"));
-    pLookUpCancelBtn        = new wxButton(this, LOOKUP_DIALOG_CANCEL,  wxT("C&ancel"),    wxPoint(212, 222), wxSize(70, 35), 0, wxDefaultValidator, wxT("LookUpCancelBtn"));
-
-    widgetPtrsSet = true;
-
-    // Query the lookup table and display the result set
-    lookup2 = new Clookup2(tableName, dispCol1, dispCol2, pDb, defDir);
-    if (!lookup2)
-    {
-        wxMessageBox(wxT("Error allocating memory for 'Clookup2' object."),wxT("Error..."));
-        Close();
-        return;
-    }
-
-    if (!lookup2->Open())
-    {
-        wxString tStr;
-        tStr.Printf(wxT("Unable to open the table '%s'."),tableName.c_str());
-        tStr += GetExtendedDBErrorMsg2(pDb,__TFILE__,__LINE__);
-        wxMessageBox(tStr,wxT("ODBC Error..."));
-        Close();
-        return;
-    }
-
-    // If displaying 2 columns, determine the maximum length of column1
-    int maxColLen;
-    if (maxLenCol1 > 0)
-        maxColLen = col1Len = maxLenCol1;  // user passed in max col length for column 1
-    else
-    {
-        // NOTE: Some databases (Firebird/Interbase) cannot handle the "fn" and "MAX()" functions
-
-        maxColLen = LOOKUP_COL_LEN;
-        if (wxStrlen(dispCol2))
-        {
-            wxString q = wxT("SELECT MAX({fn LENGTH(");
-            q += dispCol1;
-            q += wxT(")}), NULL");
-            q += wxT(" FROM ");
-            q += tableName;
-            if (wxStrlen(where))
-            {
-                q += wxT(" WHERE ");
-                q += where;
-            }
-            if (!lookup2->QueryBySqlStmt(q))
-            {
-                wxString tStr;
-                tStr = wxT("ODBC error during QueryBySqlStmt()\n\n");
-                wxMessageBox(wxDbLogExtendedErrorMsg(tStr.c_str(),lookup2->GetDb(),__TFILE__,__LINE__),
-                            wxT("ODBC Error..."),wxOK | wxICON_EXCLAMATION);
-
-                Close();
-                return;
-            }
-            if (lookup2->GetNext())
-                maxColLen = col1Len = wxAtoi(lookup2->lookupCol1);
-            else
-            {
-                wxString tStr;
-                tStr = wxT("ODBC error during GetNext()\n\n");
-                wxMessageBox(wxDbLogExtendedErrorMsg(tStr.c_str(),lookup2->GetDb(),__TFILE__,__LINE__),
-                            wxT("ODBC Error..."),wxOK | wxICON_EXCLAMATION);
-            }
-        }
-    }
-
-    // Query the actual record set
-    if ( (const char*) selectStmt && wxStrlen(selectStmt))    // Query by sql stmt passed in
-    {
-        if (!lookup2->QueryBySqlStmt(selectStmt))
-        {
-            wxString tStr;
-            tStr = wxT("ODBC error during QueryBySqlStmt()\n\n");
-            wxMessageBox(wxDbLogExtendedErrorMsg(tStr.c_str(),lookup2->GetDb(),__TFILE__,__LINE__),
-                        wxT("ODBC Error..."),wxOK | wxICON_EXCLAMATION);
-
-            Close();
-            return;
-        }
-    }
-    else    // Query using where and order by clauses
-    {
-        lookup2->SetOrderByClause(orderBy);
-        lookup2->SetWhereClause(where);
-        if (!lookup2->Query(false, distinctValues))
-        {
-            wxString tStr;
-            tStr = wxT("ODBC error during Query()\n\n");
-            wxMessageBox(wxDbLogExtendedErrorMsg(tStr.c_str(),lookup2->GetDb(),__TFILE__,__LINE__),
-                        wxT("ODBC Error..."),wxOK | wxICON_EXCLAMATION);
-
-            Close();
-            return;
-        }
-    }
-
-    // Fill in the list box from the query result set
-    wxString s;
-    while (lookup2->GetNext())
-    {
-        s = lookup2->lookupCol1;
-        if (wxStrlen(dispCol2))        // Append the optional column 2
-        {
-            s.Append(wxT(' '), (maxColLen + LISTDB_NO_SPACES_BETWEEN_COLS - wxStrlen(lookup2->lookupCol1)));
-            s.Append(lookup2->lookupCol2);
-        }
-        pLookUpSelectList->Append(s);
-    }
-
-    // Make the OK activate by pressing Enter
-    if (pLookUpSelectList->GetCount())
-    {
-        pLookUpSelectList->SetSelection(0);
-        pLookUpOkBtn->SetDefault();
-    }
-    else
-    {
-        pLookUpCancelBtn->SetDefault();
-        pLookUpOkBtn->Enable(false);
-    }
-
-    pLookUpOkBtn->Enable(allowOk);
-
-    // Display the dialog window
-    SetTitle(windowTitle);
-    Centre(wxBOTH);
-    wxEndBusyCursor();
-    ShowModal();
-
-}  // Generic lookup constructor 2
-
-
-void ClookUpDlg::OnClose(wxCloseEvent& event)
-{
-    widgetPtrsSet = false;
-    GetParent()->Enable(true);
-
-    if (lookup)
-        delete lookup;
-    if (lookup2)
-        delete lookup2;
-
-     SetReturnCode(1);
-
-    while (wxIsBusy()) wxEndBusyCursor();
-    event.Skip();
-
-//    return true;
-
-}  // ClookUpDlg::OnClose
-
-
-void ClookUpDlg::OnDClick( wxCommandEvent &event )
-{
-  wxWindow *win = (wxWindow*) event.GetEventObject();
-  OnCommand( *win, event );
-}
-
-
-void ClookUpDlg::OnButton( wxCommandEvent &event )
-{
-  wxWindow *win = (wxWindow*) event.GetEventObject();
-  OnCommand( *win, event );
-}
-
-
-void ClookUpDlg::OnCommand(wxWindow& win, wxCommandEvent& WXUNUSED(event))
-{
-    wxString widgetName = win.GetName();
-
-    if (widgetPtrsSet)
-    {
-        bool doubleclick = false;
-        // Double click
-        if (widgetName == pLookUpSelectList->GetName())
-        {
-            doubleclick = true;
-        }  // Double click
-
-        // OK Button
-        if (widgetName == pLookUpOkBtn->GetName() || doubleclick)
-        {
-            if (pLookUpSelectList->GetSelection() != -1)
-            {
-                if (noDisplayCols == 1)
-                    wxStrcpy (ListDB_Selection, pLookUpSelectList->GetStringSelection());
-                else  // 2 display columns
-                {
-                    wxString s = pLookUpSelectList->GetStringSelection();
-                    // Column 1
-                    s = s.SubString(0, col1Len-1);
-                    s = s.Strip();
-                    wxStrcpy(ListDB_Selection, s);
-                    // Column 2
-                    s = pLookUpSelectList->GetStringSelection();
-                    s = s.Mid(col1Len + LISTDB_NO_SPACES_BETWEEN_COLS);
-                    s = s.Strip();
-                    wxStrcpy(ListDB_Selection2, s);
-                }
-            }
-            else
-            {
-                wxStrcpy(ListDB_Selection,wxT(""));
-                wxStrcpy(ListDB_Selection2,wxT(""));
-            }
-            Close();
-        }  // OK Button
-
-        // Cancel Button
-        if (widgetName == pLookUpCancelBtn->GetName())
-        {
-            wxStrcpy (ListDB_Selection,wxT(""));
-            wxStrcpy (ListDB_Selection2,wxT(""));
-            Close();
-        }  // Cancel Button
-
-    }
-
-}  // ClookUpDlg::OnCommand
-
-// *********************************** listdb.cpp **********************************