📄 queries.cpp
字号:
// Queries.cpp : implementation file
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#include "WWWQuote.h"
#include "Queries.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CIssueQuery
IMPLEMENT_DYNAMIC(CIssueQuery, CRecordset)
CIssueQuery::CIssueQuery(CDatabase* pdb, BOOL bByCUSIP)
: CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CIssueQuery)
m_strCUSIP = _T("");
m_strName = _T("");
m_strTicker = _T("");
m_nFields = 3;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
m_bByCUSIP = bByCUSIP;
}
CString CIssueQuery::GetDefaultConnect()
{
return _T("ODBC;DSN=Stock Quotes");
}
CString CIssueQuery::GetDefaultSQL()
{
CString strQuery;
if (m_bByCUSIP)
strQuery = _T("SELECT Ticker, CUSIP, Name FROM Issues ORDER BY CUSIP");
else
strQuery = _T("SELECT Ticker, CUSIP, Name FROM Issues ORDER BY Name");
return strQuery;
}
void CIssueQuery::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CIssueQuery)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[Ticker]"), m_strTicker);
RFX_Text(pFX, _T("[CUSIP]"), m_strCUSIP);
RFX_Text(pFX, _T("[Name]"), m_strName);
//}}AFX_FIELD_MAP
}
/////////////////////////////////////////////////////////////////////////////
// CIssueQuery diagnostics
#ifdef _DEBUG
void CIssueQuery::AssertValid() const
{
CRecordset::AssertValid();
}
void CIssueQuery::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CQuoteQuery
IMPLEMENT_DYNAMIC(CQuoteQuery, CRecordset)
CQuoteQuery::CQuoteQuery(CDatabase* pdb, LPCTSTR strTicker, int nMonth, int nYear)
: CRecordset(pdb), m_strTicker(strTicker)
{
//{{AFX_FIELD_INIT(CQuoteQuery)
m_Volume = 0;
m_HighAsk = _T("");
m_LowBid = _T("");
m_CloseAvg = _T("");
m_nFields = 5;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
m_nMonth = nMonth;
m_nYear = nYear;
}
CString CQuoteQuery::GetDefaultConnect()
{
return _T("ODBC;DSN=Stock Quotes");
}
const int nMonthDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
CString CQuoteQuery::GetDefaultSQL()
{
CString strQuery;
strQuery.Format("SELECT Date, Volume, HighAsk, LowBid, CloseAvg"
" FROM Issues, Quotes"
" WHERE Date BETWEEN {ts '%4.4d-%2.2d-01 00:00:00'}"
" AND {ts '%4.4d-%2.2d-%2.2d 00:00:00'}"
" AND Issues.Ticker = '%s'"
" AND Issues.Ticker = Quotes.Ticker"
" ORDER BY Date",
m_nYear, m_nMonth,
m_nYear, m_nMonth, nMonthDays[m_nMonth-1],
m_strTicker);
return strQuery;
}
void CQuoteQuery::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CQuoteQuery)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Date(pFX, _T("[Date]"), m_Date);
RFX_Long(pFX, _T("[Volume]"), m_Volume);
RFX_Text(pFX, _T("[HighAsk]"), m_HighAsk);
RFX_Text(pFX, _T("[LowBid]"), m_LowBid);
RFX_Text(pFX, _T("[CloseAvg]"), m_CloseAvg);
//}}AFX_FIELD_MAP
}
/////////////////////////////////////////////////////////////////////////////
// CQuoteQuery diagnostics
#ifdef _DEBUG
void CQuoteQuery::AssertValid() const
{
CRecordset::AssertValid();
}
void CQuoteQuery::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CRangeQuery
IMPLEMENT_DYNAMIC(CRangeQuery, CRecordset)
CRangeQuery::CRangeQuery(CDatabase* pdb, LPCTSTR pszTicker)
: CRecordset(pdb), m_strTicker(pszTicker)
{
//{{AFX_FIELD_INIT(CRangeQuery)
m_nFields = 2;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
}
CString CRangeQuery::GetDefaultConnect()
{
return _T("ODBC;DSN=Stock Quotes");
}
CString CRangeQuery::GetDefaultSQL()
{
CString str;
str.Format("SELECT MIN(Date) 'Lo', MAX(Date) 'Hi' "
" FROM Quotes WHERE Ticker = '%s'", m_strTicker);
return str;
}
void CRangeQuery::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CRangeQuery)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Date(pFX, "Lo", m_tMin);
RFX_Date(pFX, "Hi", m_tMax);
//}}AFX_FIELD_MAP
}
/////////////////////////////////////////////////////////////////////////////
// CRangeQuery diagnostics
#ifdef _DEBUG
void CRangeQuery::AssertValid() const
{
CRecordset::AssertValid();
}
void CRangeQuery::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
#endif //_DEBUG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -