PreExecute
PreExecute event of ELS-QB component is fired when the user
initiates the execution of a query within ELS-QB
Component and it is the first thing that occurs in the internal query processing
chain of ELS-QB component. It occurs before the SQL text is validated against
the back-end database and before the internal SQL parsing.
Such a behavior of PreExecute event will take user a chance to manipulate
the SQL text in the PreExecute event, which in turn allows implementation of a
custom mechanisms for running parameterized queries in the host
application.
The following VC++ pseudo code illustrates the possible
usage of this feature of ELS-QBcomponent:
void
CELS_QBDemoView::OnPreExecuteElsqbctrl()
{
//
the CParamDlg is a CDialog derived class in the host
application
//
via which the user will enter the query parameter value.
//
Labels and text-boxes in such a dialog
//
may be dynamically created depending on the number of
//
parameter variables for the parameterized query
CString strSQL,
strFldName;
int nPos;
// get the
current SQL text to check for ?-symbols
strSQL =
m_QBCtrl.GetSQLText();
nPos =
strSQL.Find(_T('?'));
if(nPos >=
0)
{
// calculate word length and using Mid() function
// get strFldName as the word following ?-symbol
// pass this parameter name to the CParamDlg
//
to update static control field Name
CParamDlg dlg;
dlg.m_statFieldName = strFldName;
if(dlg.DoModal() == IDOK)
{
strSQL = strSQL.Left(nPos);
strSQL = strSQL + dlg.m_strValue;
m_QBCtrl.SetQueryText(strSQL);
// since CancelExecute was not called,
automatically
// proceed with the execution of the query
}
else
// the user clicked Cancel button, so cancel
//
the query execution
m_QBCtrl.CancelExecute();
}
}