📄 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 + -