⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 latestdatadlg.cpp

📁 数据库开发
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -