?? latestdatadlg.cpp
字號:
// LatestDataDlg.cpp : implementation file
//
#include "stdafx.h"
#include "DataTest.h"
#include "LatestDataDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLatestDataDlg dialog
CLatestDataDlg::CLatestDataDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLatestDataDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLatestDataDlg)
m_EndTime = COleDateTime::GetCurrentTime();
m_StartTime = COleDateTime::GetCurrentTime();
m_StartDate = COleDateTime::GetCurrentTime();
m_EndDate = COleDateTime::GetCurrentTime();
//}}AFX_DATA_INIT
}
void CLatestDataDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLatestDataDlg)
DDX_Control(pDX, IDC_COMBOTIME_INTERVAL, m_TimeCombox);
DDX_Control(pDX, IDC_LATEST_LIST, m_grid);
DDX_DateTimeCtrl(pDX, IDC_ENDTTIME, m_EndTime);
DDX_DateTimeCtrl(pDX, IDC_STARTTIME, m_StartTime);
DDX_DateTimeCtrl(pDX, IDC_STARTDATE, m_StartDate);
DDX_DateTimeCtrl(pDX, IDC_ENDDATE, m_EndDate);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLatestDataDlg, CDialog)
//{{AFX_MSG_MAP(CLatestDataDlg)
ON_WM_CANCELMODE()
ON_BN_CLICKED(IDC_QUERY, OnQuery)
ON_BN_CLICKED(IDC_NEXTPAGE, OnNextpage)
ON_BN_CLICKED(IDC_PREPAGE, OnPrepage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLatestDataDlg message handlers
BOOL CLatestDataDlg::OnInitDialog()
{
CDialog::OnInitDialog();
InitItemParams();
// TODO: Add extra initialization here
m_grid.SetExtendedStyle(LVS_EX_FLATSB
|LVS_EX_FULLROWSELECT
|LVS_EX_HEADERDRAGDROP
|LVS_EX_ONECLICKACTIVATE
|LVS_EX_GRIDLINES);
CDataTestApp* pApp = (CDataTestApp*) AfxGetApp();
/********************初始化CtlList狀態**************************/
FillListItem();//CtlList全部條目
pApp->m_curConfig.SelectListItem(m_bItemState);
/*******test*********/
// m_bItemState[1] =0;m_bItemState[2] =0;m_bItemState[3] =0;m_bItemState[4] =0;
/****************************************************/
int nRow = 0;
for(int i=0;i<27;i++)
{
if(m_bItemState[i]==true)
m_grid.InsertColumn(nRow,m_sListItem[i],LVCFMT_LEFT, m_nItemLength[i],nRow);
nRow++;
}
/***************************************************************************/
/*********************查詢10Sec數據當天表格,如果沒有,進行創建**************/
// CString sTable;
CTime m_dtToday = CTime::GetCurrentTime();
m_sCurTable.Format("%sTenSec", m_dtToday.Format("%Y%m%d"));
pApp->m_curConfig.CheckToSureTableExist(m_sCurTable, "TemplateTenSec");
/***************************************************************************/
/*********************獲取10Sec數據當天表格中內容,有內容則顯示***************/
CString temp("SELECT COUNT(TenS_nID) as Tianshu FROM %s");
CString strsql;
strsql.Format(temp,m_sCurTable);
m_TotalRecordNum = pApp->m_curConfig.GetRecordCount(strsql);
if(m_TotalRecordNum>0)//已經有記錄
{
m_npages = m_TotalRecordNum/RecordNum_PerPage;// //初始化總頁數-1
m_nLProw = m_TotalRecordNum%RecordNum_PerPage;//最后一頁記錄數
if(m_nLProw == 0)
{
m_npages = m_npages-1;
m_nLProw = RecordNum_PerPage;
}
if(m_npages>0)
m_nCurRecNum = RecordNum_PerPage;
else//只有一頁內容
{
m_nCurRecNum = m_nLProw;
GetDlgItem(IDC_PREPAGE)->EnableWindow(false);
GetDlgItem(IDC_NEXTPAGE)->EnableWindow(false);
//設置上一頁下一頁均為灰色
}
GetDlgItem(IDC_PREPAGE)->EnableWindow(false);
GetDlgItem(IDC_ENDDATE)->EnableWindow(false);
CString stempsql;
stempsql.Format(m_sInitPsql,m_nCurRecNum,m_sCurTable);
CDBTenSec m_DBOnePage[RecordNum_PerPage];
pApp->m_curConfig.GetDataFromTenSec(stempsql,m_DBOnePage,m_nCurRecNum);
int nItem, RowNumber;
CString strNo, strTimeIndex;
for(RowNumber=0;RowNumber<m_nCurRecNum;RowNumber++)
{
strNo.Format("%d", RowNumber);
strTimeIndex = GetTimeFromIndex(m_DBOnePage[RowNumber].m_nIndex);
int nVIndex=0;//可見條目序號
int nk = 0;
nItem = m_grid.InsertItem(RowNumber, _T(strNo));
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)strTimeIndex);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sSO2SC);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sNOSC);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sNO2SC);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sYanchenSC);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sSO2ZS);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sNOZS);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sNO2ZS);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sYanchenZS);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sYanqiWD);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sYanqiSD);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sYanqiLS);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,(char*)(_bstr_t)m_DBOnePage[RowNumber].m_sYanqiHY);
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
if(m_bItemState[nk++])
m_grid.SetItemText(nItem,nVIndex++,"");
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
else
{
GetDlgItem(IDC_PREPAGE)->EnableWindow(false);
GetDlgItem(IDC_NEXTPAGE)->EnableWindow(false);
GetDlgItem(IDC_ENDDATE)->EnableWindow(false);
return false;
}
}
void CLatestDataDlg::OnCancelMode()
{
CDialog::OnCancelMode();
// TODO: Add your message handler code here
}
void CLatestDataDlg::FillListItem()
{
m_sListItem[0]="時間段";
m_sListItem[1]="SO2(ppm)";
m_sListItem[2]="NO(ppm) ";
m_sListItem[3]="NO2(ppm)";
m_sListItem[4]="煙塵(mg/m3)";
m_sListItem[5]="SO2標干(mg/m3)";
m_sListItem[6]="NO標干(mg/m3)";
m_sListItem[7]="NO2標干(mg/m3)";
m_sListItem[8]="煙塵標干(mg/m3)";
m_sListItem[9]="SO2折算(mg/m3)";
m_sListItem[10]="NO折算(mg/m3)";
m_sListItem[11]="NO2折算(mg/m3)";
m_sListItem[12]="煙塵折算(mg/m3)";
m_sListItem[13]="煙氣溫度(oC)";
m_sListItem[14]="煙氣濕度(%)";
m_sListItem[15]="大氣壓(Pa)";
m_sListItem[16]="煙氣靜壓(Pa)";
m_sListItem[17]="煙氣流速(m/s)";
m_sListItem[18]="煙氣排放率(m3/h)";
m_sListItem[19]="煙氣標干排放率(m3/h)";
m_sListItem[20]="機組負荷(%)";
m_sListItem[21]="煙氣含氧量(%)";
m_sListItem[22]="空氣過量系數";
m_sListItem[23]="標準空氣過量系數";
m_sListItem[24]="積分時間(ms)";
m_sListItem[25]="煙道面積(m2)";
m_sListItem[26]="皮托管系數";
m_nItemLength[0]=140;
for(int j=1;j<27;j++)
m_nItemLength[j]=(int)60*(m_sListItem[j].GetLength()/8.0);
}
void CLatestDataDlg::InitItemParams()
{
int i=0;
for( i=0;i<27;i++)
{
m_nItemLength[i]=0;
}
for( i=0;i<27;i++)
{
m_sListItem[i]="";
}
m_TimeCombox.SetCurSel(0);
m_bquery = false;//初始化狀態,非查詢狀態。
m_TotalRecordNum = 0;
m_npages = 0;//總頁數
m_nLProw = 0;//最后一個不滿一頁的記錄數
m_nCurPage = 1;//目前頁面位置
m_nCurRecNum = 0;//本頁面顯示記錄條數
memset(m_bItemState,0,sizeof(m_bItemState));
m_sInitPsql = "SELECT TOP %d * FROM %s ORDER BY TenS_nID ASC";//初始顯示第一頁sql主體
m_sInitNsql = "SELECT TOP %d * FROM %s WHERE TenS_nID NOT IN(SELECT TOP %d TenS_nID FROM %s) ORDER BY TenS_nID ASC";//初始顯示翻頁sql主體
m_sQueryPsql = "SELECT TOP %d * FROM %s WHERE Index >= %d AND Index <= %d ORDER BY TenS_nID ASC";//查詢顯示第一頁sql主體
m_sQueryNsql = "SELECT TOP %d * FROM %s WHERE Index >= %d AND Index <= %d AND TenS_nID NOT IN(SELECT TOP %d TenS_nID FROM %s WHERE Index >= %d AND Index <= %d) ORDER BY TenS_nID ASC";//查詢顯示翻頁sql主體
}
void CLatestDataDlg::OnQuery()
{
// TODO: Add your control notification handler code here
UpdateData(true);
m_bquery = true;
int nHour,nMinute,nSecond;
nHour = m_StartTime.GetHour();
nMinute = m_StartTime.GetMinute();
nSecond = m_StartTime.GetSecond();
nStartIndex = nHour*360 + nMinute*6 + nSecond/10;
nHour = m_EndTime.GetHour();
nMinute = m_EndTime.GetMinute();
nSecond = m_EndTime.GetSecond();
nEndIndex = nHour*360 + nMinute*6 + nSecond/10;
m_sCurTable.Format("%sTenSec", m_StartDate.Format("%Y%m%d"));//獲取表名
CDataTestApp* pApp = (CDataTestApp*) AfxGetApp();
CString temp("SELECT COUNT(TenS_nID) as Tianshu FROM %s WHERE Index >= %d AND Index <= %d");
CString strsql;
strsql.Format(temp,m_sCurTable,nStartIndex,nEndIndex);
m_TotalRecordNum = pApp->m_curConfig.GetRecordCount(strsql);
// strsql.Format("SELECT TOP %d * FROM TenSec ORDER BY TenS_nID ASC",RecordNum_PerPage*m_nCurPage);
if(m_TotalRecordNum>0)
{
m_npages = m_TotalRecordNum/RecordNum_PerPage;// //初始化總頁數-1
m_nLProw = m_TotalRecordNum%RecordNum_PerPage;//最后一頁記錄數
if(m_nLProw == 0)
{
m_npages = m_npages-1;
m_nLProw = RecordNum_PerPage;
}
if(m_npages>0)
{
m_nCurRecNum = RecordNum_PerPage;
GetDlgItem(IDC_NEXTPAGE)->EnableWindow(true);
}
else//只有一頁內容
{
m_nCurRecNum = m_nLProw;
GetDlgItem(IDC_PREPAGE)->EnableWindow(false);
GetDlgItem(IDC_NEXTPAGE)->EnableWindow(false);
}
GetDlgItem(IDC_PREPAGE)->EnableWindow(false);
CString stempsql;
stempsql.Format(m_sQueryPsql,m_nCurRecNum,m_sCurTable,nStartIndex,nEndIndex);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -