home *** CD-ROM | disk | FTP | other *** search
- // QueryView.cpp : implementation of the CQueryView class
- //
- #include "stdafx.h"
- #include "Query.h"
-
- #include "QueryDoc.h"
- #include "QueryView.h"
- #include "DialogLatLon.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // CQueryView
-
- IMPLEMENT_DYNCREATE(CQueryView, CScrollView)
-
- BEGIN_MESSAGE_MAP(CQueryView, CScrollView)
- //{{AFX_MSG_MAP(CQueryView)
- ON_COMMAND(ID_VIEW_CLEAR, OnViewClear)
- ON_COMMAND(ID_VIEW_QUERY, OnViewDynamicQuery)
- ON_COMMAND(ID_VIEW_CANNED, OnViewStoredQuery)
- ON_COMMAND(ID_VIEW_LATLON, OnViewLatlon)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // CQueryView construction/destruction
-
- CQueryView::CQueryView()
- {
- // TODO: add construction code here
- m_WestLongitude= 125.0;
- m_EastLongitude= 116.0;
- m_SouthLatitude= 39.0;
- m_NorthLatitude= 45.0;
-
- }
-
- CQueryView::~CQueryView()
- {
- }
-
- BOOL CQueryView::PreCreateWindow(CREATESTRUCT& cs)
- {
- // TODO: Modify the Window class or styles here by modifying
- // the CREATESTRUCT cs
-
- return CScrollView::PreCreateWindow(cs);
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CQueryView drawing
-
- void CQueryView::OnDraw(CDC* pDC)
- {
- CQueryDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
-
-
- CSize sizeTotal;
- sizeTotal.cx = 100;
- TEXTMETRIC tm;
- pDC->GetTextMetrics(&tm);
- sizeTotal.cy = tm.tmHeight*m_strings.GetSize();
- SetScrollSizes(MM_TEXT, sizeTotal);
-
- for (int idx=0; idx<m_strings.GetSize(); idx++) {
- CString str;
- str.Format("%d: %s", idx, m_strings.GetAt(idx));
- pDC->TabbedTextOut(0,idx*tm.tmHeight,str,0,NULL,0);
- }
-
- }
-
- void CQueryView::OnInitialUpdate()
- {
- CScrollView::OnInitialUpdate();
- CSize sizeTotal;
- // TODO: calculate the total size of this view
- sizeTotal.cx = sizeTotal.cy = 100;
- SetScrollSizes(MM_TEXT, sizeTotal);
-
- // database creation
- CString dbName= GetDefaultDBName();
- m_db.Open(dbName);
-
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CQueryView diagnostics
-
- #ifdef _DEBUG
- void CQueryView::AssertValid() const
- {
- CScrollView::AssertValid();
- }
-
- void CQueryView::Dump(CDumpContext& dc) const
- {
- CScrollView::Dump(dc);
- }
-
- CQueryDoc* CQueryView::GetDocument() // non-debug version is inline
- {
- ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CQueryDoc)));
- return (CQueryDoc*)m_pDocument;
- }
- #endif //_DEBUG
- CString CQueryView::GetDefaultDBName()
- {
- CFileStatus status;
- CString strFileName= _T("..\\..\\States.mdb");
- if( !CFile::GetStatus( strFileName, status ) )
- {
- strFileName= _T("..\\States.mdb");
- if( !CFile::GetStatus( strFileName, status ) )
- {
- strFileName= _T("");
- }
- }
- return strFileName;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CQueryView message handlers
-
- void CQueryView::OnViewClear()
- {
- m_strings.RemoveAll();
- Invalidate();
- }
-
- void CQueryView::OnViewDynamicQuery()
- {
- // query def CREATION
- CDaoQueryDef query(&m_db);
-
- CString sql= "SELECT state FROM States WHERE ";
- CString whereClause;
- whereClause.Format(
- "((wlon<=%lg) Or (elon>%lg) Or (nlat<=%lg) Or (slat>%lg)) = False;",
- m_EastLongitude, m_WestLongitude, m_SouthLatitude, m_NorthLatitude);
- sql += whereClause;
- query.Create(NULL, sql);
- // recordset creation
- CDaoRecordset rs(&m_db);
- rs.Open(&query);
- while (!rs.IsEOF()) // Iterate throught the recordset
- {
- COleVariant state(rs.GetFieldValue("state"));
- CString name(state.pbVal);
- m_strings.Add(name);
- rs.MoveNext();
- }
- Invalidate();
-
- }
-
- void CQueryView::OnViewStoredQuery()
- {
- // query def OPEN on existing stored query
- CDaoQueryDef query(&m_db);
- query.Open("SpatialQuery"); // Name of the stored query.
- COleVariant eastlon(m_EastLongitude);
- COleVariant westlon(m_WestLongitude);
- COleVariant southlat(m_SouthLatitude);
- COleVariant northlat(m_NorthLatitude);
- query.SetParamValue("WestLongitude", westlon);
- query.SetParamValue("EastLongitude", eastlon);
- query.SetParamValue("SouthLatitude", southlat);
- query.SetParamValue("NorthLatitude", northlat);
-
- // recordset creation
- CDaoRecordset rs(&m_db);
- rs.Open(&query);
- while (!rs.IsEOF()) // Iterate throught the recordset
- {
- COleVariant state(rs.GetFieldValue("state"));
- CString name(state.pbVal);
- m_strings.Add(name);
- rs.MoveNext();
- }
- Invalidate();
- }
-
-
- void CQueryView::OnViewLatlon()
- {
- // TODO: Add your command handler code here
- CDialogLatLon dlg;
- dlg.m_EastLongitude= m_EastLongitude;
- dlg.m_NorthLatitude= m_NorthLatitude;
- dlg.m_SouthLatitude= m_SouthLatitude;
- dlg.m_WestLongitude= m_WestLongitude;
- if (IDOK == dlg.DoModal())
- {
- m_EastLongitude= dlg.m_EastLongitude;
- m_NorthLatitude= dlg.m_NorthLatitude;
- m_SouthLatitude= dlg.m_SouthLatitude;
- m_WestLongitude= dlg.m_WestLongitude;
- }
-
- }
-