#include "db.xpm"
#endif
-#include <stdio.h> // Included strictly for reading the text file with the database parameters
+#include <stdio.h> /* Included strictly for reading the text file with the database parameters */
-#include <wx/db.h> // Required in the file which will get the data source connection
-#include <wx/dbtable.h> // Has the wxTable object from which all data objects will inherit their data table functionality
+#include <wx/db.h> /* Required in the file which will get the data source connection */
+#include <wx/dbtable.h> /* Has the wxTable object from which all data objects will inherit their data table functionality */
-extern DbList* WXDLLEXPORT PtrBegDbList; // from db.cpp, used in getting back error results from db connections
+extern DbList* WXDLLEXPORT PtrBegDbList; /* from db.cpp, used in getting back error results from db connections */
-#include "dbtest.h" // Header file for this demonstration program
-#include "listdb.h" // Code to support the "Lookup" button on the editor dialog
+#include "dbtest.h" /* Header file for this demonstration program */
+#include "listdb.h" /* Code to support the "Lookup" button on the editor dialog */
IMPLEMENT_APP(DatabaseDemoApp)
-extern char ListDB_Selection[]; // Used to return the first column value for the selected line from the listDB routines
-extern char ListDB_Selection2[]; // Used to return the second column value for the selected line from the listDB routines
-
-DatabaseDemoFrame *DemoFrame; // Pointer to the main frame
+extern char ListDB_Selection[]; /* Used to return the first column value for the selected line from the listDB routines */
+extern char ListDB_Selection2[]; /* Used to return the second column value for the selected line from the listDB routines */
+DatabaseDemoFrame *DemoFrame; /* Pointer to the main frame */
/* Pointer to the main database connection used in the program. This
* pointer would normally be used for doing things as database lookups
* table object which will do a CommitTrans() or RollbackTrans() that a
* new wxDB object be created and used for it.
*/
+
wxDB *READONLY_DB;
-
/*
* This function will return the exact string(s) from the database engine
* indicating all error conditions which have just occured during the
* NOTE: The value returned by this function is for temporary use only and
* should be copied for long term use
*/
+
char *GetExtendedDBErrorMsg(char *ErrFile, int ErrLine)
{
static wxString msg;
if (ErrFile || ErrLine)
{
- msg += "\n";
- msg.Append ('-',80);
- msg += "\nFile: ";
+ msg += "File: ";
msg += ErrFile;
msg += " Line: ";
tStr.Printf("%d",ErrLine);
msg += "\n";
}
- msg.Append ('-',80);
- msg.Append ("\nODBC ERRORS\n");
- msg.Append ('-',80);
+ msg.Append ("\nODBC errors:\n");
msg += "\n";
- // Scan through each database connection displaying
- // any ODBC errors that have occured.
+
+ /* 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
// to close the program here that is not done elsewhere
this->Destroy();
-} // DatabaseDemoFrame::OnClose()
+} // DatabaseDemoFrame::OnCloseWindow()
void DatabaseDemoFrame::CreateDataTable()
// Build the dialog
- wxStaticBox *FunctionGrp = new wxStaticBox(this, EDITOR_DIALOG_FN_GROUP, "", wxPoint(15, 1), wxSize(497, 69), 0, "FunctionGrp");
- wxStaticBox *SearchGrp = new wxStaticBox(this, EDITOR_DIALOG_SEARCH_GROUP, "", wxPoint(417, 1), wxSize(95, 242), 0, "SearchGrp");
+ (void)new wxStaticBox(this, EDITOR_DIALOG_FN_GROUP, "", wxPoint(15, 1), wxSize(497, 69), 0, "FunctionGrp");
+ (void)new wxStaticBox(this, EDITOR_DIALOG_SEARCH_GROUP, "", wxPoint(417, 1), wxSize(95, 242), 0, "SearchGrp");
pCreateBtn = new wxButton(this, EDITOR_DIALOG_CREATE, "&Create", wxPoint(25, 21), wxSize(70, 35), 0, wxDefaultValidator, "CreateBtn");
pEditBtn = new wxButton(this, EDITOR_DIALOG_EDIT, "&Edit", wxPoint(102, 21), wxSize(70, 35), 0, wxDefaultValidator, "EditBtn");
// The constructed where clause below has a sub-query within it "SELECT MIN(NAME) FROM %s"
// to achieve a single row (in this case the first name in alphabetical order).
- Contact->whereStr.Printf("NAME = (SELECT MIN(NAME) FROM %s)",Contact->tableName);
+ // commented out because PostgreSQL can't do this
+ //Contact->whereStr.Printf("NAME = (SELECT MIN(NAME) FROM %s)",Contact->tableName);
// NOTE: (const char*) returns a pointer which may not be valid later, so this is short term use only
Contact->where = (char*) (const char*) Contact->whereStr;
} // CeditorDlg constructor
-bool CeditorDlg::OnClose()
+void CeditorDlg::OnCloseWindow(wxCloseEvent& event)
{
// Clean up time
if ((mode != mCreate) && (mode != mEdit))
{
if (Contact)
delete Contact;
- return TRUE;
+ this->Destroy();
}
else
{
wxMessageBox("Must finish processing the current record being created/modified before exiting","Notice...",wxOK | wxICON_INFORMATION);
- return FALSE;
+ event.Veto();
}
-} // CeditorDlg::OnClose()
+} // CeditorDlg::OnCloseWindow()
void CeditorDlg::OnButton( wxCommandEvent &event )
}
}
+ // commented out because PostgreSQL can't do this
+
// Previous record not available, retrieve first record in table
- Contact->whereStr = "NAME = (SELECT MIN(NAME) FROM ";
- Contact->whereStr += Contact->tableName;
- Contact->whereStr += ")";
+ //Contact->whereStr = "NAME = (SELECT MIN(NAME) FROM ";
+ //Contact->whereStr += Contact->tableName;
+ //Contact->whereStr += ")";
+
Contact->where = (char*) (const char*) Contact->whereStr;
if (!Contact->Query())
{
// display it, if the query string has changed.
if (strcmp(qryWhere, (const char*) Contact->qryWhereStr))
{
- Contact->orderBy = "NAME";
- Contact->whereStr = "NAME = (SELECT MIN(NAME) FROM ";
- Contact->whereStr += CONTACT_TABLE_NAME;
+
+ // commented out because PostgreSQL can't do this
+ Contact->whereStr = "";
+ //Contact->orderBy = "NAME";
+ //Contact->whereStr = "NAME = (SELECT MIN(NAME) FROM ";
+ //Contact->whereStr += CONTACT_TABLE_NAME;
// Append the query where string (if there is one)
Contact->qryWhereStr = qryWhere;
Contact->whereStr += Contact->qryWhereStr;
}
// Close the expression with a right paren
- Contact->whereStr += ")";
+ // Contact->whereStr += ")";
// Requery the table
Contact->where = (char*) (const char*) Contact->whereStr;
if (!Contact->Query())
// Query the first record in the table
Contact->orderBy = "NAME";
- Contact->whereStr = "NAME = (SELECT MIN(NAME) FROM ";
- Contact->whereStr += CONTACT_TABLE_NAME;
- Contact->whereStr += ")";
+ // commented out because PostgreSQL can't do this
+ //Contact->whereStr = "NAME = (SELECT MIN(NAME) FROM ";
+ //Contact->whereStr += CONTACT_TABLE_NAME;
+ //Contact->whereStr += ")";
Contact->where = (char*) (const char*) Contact->whereStr;
if (!Contact->Query())
{
wxString w;
-
- w = "NAME = (SELECT MIN(NAME) FROM ";
- w += Contact->tableName;
- w += " WHERE NAME > '";
+ // commented out because PostgreSQL can't do this
+ //w = "NAME = (SELECT MIN(NAME) FROM ";
+ //w += Contact->tableName;
+ // w += " WHERE NAME > '";
+ w = "(NAME > '";
w += Contact->Name;
w += "'";
{
wxString w;
- w = "NAME = (SELECT MAX(NAME) FROM ";
- w += Contact->tableName;
- w += " WHERE NAME < '";
+ // commented out because PostgreSQL can't do this
+ //w = "NAME = (SELECT MAX(NAME) FROM ";
+ //w += Contact->tableName;
+ //w += " WHERE NAME < '";
+ w = "(NAME < '";
w += Contact->Name;
w += "'";
/*
* CparameterDlg constructor
*/
+
+BEGIN_EVENT_TABLE(CparameterDlg, wxDialog)
+ EVT_CLOSE(CparameterDlg::OnCloseWindow)
+END_EVENT_TABLE()
+
CparameterDlg::CparameterDlg(wxWindow *parent) : wxDialog (parent, PARAMETER_DIALOG, "ODBC parameter settings", wxPoint(-1, -1), wxSize(400, 275))
{
// Since the ::OnCommand() function is overridden, this prevents the widget
} // CparameterDlg constructor
-bool CparameterDlg::OnClose()
+void CparameterDlg::OnCloseWindow(wxCloseEvent& event)
{
// Put any additional checking necessary to make certain it is alright
// to close the program here that is not done elsewhere
bool Ok = (wxMessageBox("No changes have been saved.\n\nAre you sure you wish exit the parameter screen?","Confirm",wxYES_NO|wxICON_QUESTION) == wxYES);
if (!Ok)
- return FALSE;
+ {
+ event.Veto();
+ return;
+ }
wxGetApp().params = savedParamSettings;
}
if (GetParent() != NULL)
GetParent()->SetFocus();
- return TRUE;
-} // Cparameter::OnClose()
+ this->Destroy();
+
+} // Cparameter::OnCloseWindow()
void CparameterDlg::OnCommand(wxWindow& win, wxCommandEvent& event)
BEGIN_EVENT_TABLE(CqueryDlg, wxDialog)
EVT_BUTTON(-1, CqueryDlg::OnButton)
+ EVT_CLOSE(CqueryDlg::OnCloseWindow)
END_EVENT_TABLE()
// CqueryDlg() constructor
} // CqueryDlg::OnCommand
-bool CqueryDlg::OnClose()
+void CqueryDlg::OnCloseWindow(wxCloseEvent& event)
{
// Clean up
if (colInf)
GetParent()->SetFocus();
wxEndBusyCursor();
- return TRUE;
-} // CqueryDlg::OnClose()
+ this->Destroy();
+
+} // CqueryDlg::OnCloseWindow()
/*
bool CqueryDlg::SetWidgetPtrs()