286 lines
7 KiB
C++
286 lines
7 KiB
C++
// adsqryDoc.cpp : implementation of the CAdsqryDoc class
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "adsqDoc.h"
|
|
#include "newquery.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CAdsqryDoc
|
|
|
|
IMPLEMENT_DYNCREATE(CAdsqryDoc, CDocument)
|
|
|
|
BEGIN_MESSAGE_MAP(CAdsqryDoc, CDocument)
|
|
//{{AFX_MSG_MAP(CAdsqryDoc)
|
|
// NOTE - the ClassWizard will add and remove mapping macros here.
|
|
// DO NOT EDIT what you see in these blocks of generated code!
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CAdsqryDoc construction/destruction
|
|
|
|
/***********************************************************
|
|
Function:
|
|
Arguments:
|
|
Return:
|
|
Purpose:
|
|
Author(s):
|
|
Revision:
|
|
Date:
|
|
***********************************************************/
|
|
CAdsqryDoc::CAdsqryDoc()
|
|
{
|
|
// TODO: add one-time construction code here
|
|
m_pDataSource = NULL;
|
|
}
|
|
|
|
|
|
/***********************************************************
|
|
Function:
|
|
Arguments:
|
|
Return:
|
|
Purpose:
|
|
Author(s):
|
|
Revision:
|
|
Date:
|
|
***********************************************************/
|
|
CAdsqryDoc::~CAdsqryDoc()
|
|
{
|
|
if( m_pDataSource )
|
|
{
|
|
delete m_pDataSource;
|
|
}
|
|
}
|
|
|
|
|
|
/***********************************************************
|
|
Function:
|
|
Arguments:
|
|
Return:
|
|
Purpose:
|
|
Author(s):
|
|
Revision:
|
|
Date:
|
|
***********************************************************/
|
|
BOOL CAdsqryDoc::OnNewDocument()
|
|
{
|
|
CNewQuery aNewQuery;
|
|
CString strTitle;
|
|
SEARCHPREF* pSearchPref;
|
|
|
|
if (!CDocument::OnNewDocument())
|
|
return FALSE;
|
|
|
|
|
|
if( aNewQuery.DoModal( ) != IDOK )
|
|
return FALSE;
|
|
|
|
pSearchPref = (SEARCHPREF*) AllocADsMem( sizeof(SEARCHPREF) );
|
|
if( NULL == pSearchPref )
|
|
return FALSE;
|
|
|
|
pSearchPref->bEncryptPassword = FALSE;
|
|
pSearchPref->bUseSQL = FALSE;
|
|
pSearchPref->nAsynchronous = -1;
|
|
pSearchPref->nDerefAliases = -1;
|
|
pSearchPref->nSizeLimit = -1;
|
|
pSearchPref->nTimeLimit = -1;
|
|
pSearchPref->nAttributesOnly = -1;
|
|
pSearchPref->nScope = -1;
|
|
pSearchPref->nTimeOut = -1;
|
|
pSearchPref->nPageSize = -1;
|
|
pSearchPref->nChaseReferrals = -1;
|
|
|
|
_tcscpy( pSearchPref->szSource, aNewQuery.m_strSource );
|
|
_tcscpy( pSearchPref->szQuery, aNewQuery.m_strQuery );
|
|
_tcscpy( pSearchPref->szAttributes, aNewQuery.m_strAttributes );
|
|
_tcscpy( pSearchPref->szScope, aNewQuery.m_strScope );
|
|
_tcscpy( pSearchPref->szUserName, aNewQuery.m_strUser );
|
|
_tcscpy( pSearchPref->szPassword, aNewQuery.m_strPassword );
|
|
|
|
pSearchPref->bEncryptPassword = aNewQuery.m_bEncryptPassword;
|
|
pSearchPref->bUseSQL = aNewQuery.m_bUseSQL;
|
|
|
|
if( !GetSearchPreferences( pSearchPref ) )
|
|
return FALSE;
|
|
|
|
if( aNewQuery.m_bUseSearch )
|
|
{
|
|
m_pDataSource = new CADsSearchDataSource;
|
|
}
|
|
else
|
|
{
|
|
m_pDataSource = new CADsOleDBDataSource;
|
|
}
|
|
|
|
|
|
m_pDataSource->SetQueryParameters( pSearchPref );
|
|
|
|
FreeADsMem( pSearchPref );
|
|
|
|
strTitle = aNewQuery.m_strSource + _T(" ")+
|
|
aNewQuery.m_strQuery + _T(" ")+
|
|
aNewQuery.m_strAttributes;
|
|
|
|
m_pDataSource->RunTheQuery( );
|
|
|
|
SetTitle( strTitle );
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/***********************************************************
|
|
Function:
|
|
Arguments:
|
|
Return:
|
|
Purpose:
|
|
Author(s):
|
|
Revision:
|
|
Date:
|
|
***********************************************************/
|
|
BOOL CAdsqryDoc::GetSearchPreferences( SEARCHPREF* pSearchPref )
|
|
{
|
|
CSearchPreferencesDlg aSearchPref;
|
|
|
|
if( aSearchPref.DoModal( ) != IDOK )
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
//***************************************************************************
|
|
if( !aSearchPref.m_strAsynchronous.IsEmpty( ) )
|
|
{
|
|
if( !aSearchPref.m_strAsynchronous.CompareNoCase( _T("Yes") ) )
|
|
{
|
|
pSearchPref->nAsynchronous = 1;
|
|
}
|
|
else
|
|
{
|
|
pSearchPref->nAsynchronous = 0;
|
|
}
|
|
}
|
|
|
|
//***************************************************************************
|
|
if( !aSearchPref.m_strChaseReferrals.IsEmpty( ) )
|
|
{
|
|
if( !aSearchPref.m_strChaseReferrals.CompareNoCase( _T("Yes") ) )
|
|
{
|
|
pSearchPref->nChaseReferrals = 1;
|
|
}
|
|
else
|
|
{
|
|
pSearchPref->nChaseReferrals = 0;
|
|
}
|
|
}
|
|
|
|
//***************************************************************************
|
|
if( !aSearchPref.m_strAttributesOnly.IsEmpty( ) )
|
|
{
|
|
if( !aSearchPref.m_strAttributesOnly.CompareNoCase( _T("Yes") ) )
|
|
{
|
|
pSearchPref->nAttributesOnly = 1;
|
|
}
|
|
else
|
|
{
|
|
pSearchPref->nAttributesOnly = 0;
|
|
}
|
|
}
|
|
|
|
//***************************************************************************
|
|
if( !aSearchPref.m_strDerefAliases.IsEmpty( ) )
|
|
{
|
|
if( !aSearchPref.m_strDerefAliases.CompareNoCase( _T("Yes") ) )
|
|
{
|
|
pSearchPref->nDerefAliases = 1;
|
|
}
|
|
else
|
|
{
|
|
pSearchPref->nDerefAliases = 0;
|
|
}
|
|
}
|
|
|
|
//***************************************************************************
|
|
if( !aSearchPref.m_strTimeOut.IsEmpty( ) )
|
|
{
|
|
pSearchPref->nTimeOut = _ttoi( aSearchPref.m_strTimeOut.GetBuffer( 16 ) );
|
|
}
|
|
|
|
//***************************************************************************
|
|
if( !aSearchPref.m_strTimeLimit.IsEmpty( ) )
|
|
{
|
|
pSearchPref->nTimeLimit = _ttoi( aSearchPref.m_strTimeLimit.GetBuffer( 16 ) );
|
|
}
|
|
|
|
//***************************************************************************
|
|
if( !aSearchPref.m_strSizeLimit.IsEmpty( ) )
|
|
{
|
|
pSearchPref->nSizeLimit = _ttoi( aSearchPref.m_strSizeLimit.GetBuffer( 16 ) );
|
|
}
|
|
|
|
//***************************************************************************
|
|
if( !aSearchPref.m_strPageSize.IsEmpty( ) )
|
|
{
|
|
pSearchPref->nPageSize = _ttoi( aSearchPref.m_strPageSize.GetBuffer( 16 ) );
|
|
}
|
|
|
|
//***************************************************************************
|
|
if( !aSearchPref.m_strScope.IsEmpty( ) )
|
|
{
|
|
_tcscpy( pSearchPref->szScope, aSearchPref.m_strScope );
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CAdsqryDoc serialization
|
|
|
|
|
|
/***********************************************************
|
|
Function:
|
|
Arguments:
|
|
Return:
|
|
Purpose:
|
|
Author(s):
|
|
Revision:
|
|
Date:
|
|
***********************************************************/
|
|
void CAdsqryDoc::Serialize(CArchive& ar)
|
|
{
|
|
if (ar.IsStoring())
|
|
{
|
|
// TODO: add storing code here
|
|
}
|
|
else
|
|
{
|
|
// TODO: add loading code here
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CAdsqryDoc diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CAdsqryDoc::AssertValid() const
|
|
{
|
|
CDocument::AssertValid();
|
|
}
|
|
|
|
void CAdsqryDoc::Dump(CDumpContext& dc) const
|
|
{
|
|
CDocument::Dump(dc);
|
|
}
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CAdsqryDoc commands
|