实际工控项目,串口数据先存到数据库,再显示。
void CMainFrame::createList()
{
ctrlList.Create( WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS,
CRect(0,0,0,0), this, 1); //?? 不成功
ctrlList.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );
ctrlList.InsertColumn(0, L"开始时间", LVCFMT_CENTER, 120, 0 );
ctrlList.InsertColumn(1, L"结束时间", LVCFMT_CENTER, 120, 0 );
ctrlList.InsertColumn(2, L"管路号", LVCFMT_CENTER, 60, 0 );
ctrlList.InsertColumn(3, L"酒度", LVCFMT_CENTER, 60, 0 );
ctrlList.InsertColumn(4, L"设定值", LVCFMT_CENTER, 100, 0 );
ctrlList.InsertColumn(5, L"实际值", LVCFMT_CENTER, 100, 0 );
ctrlList.InsertColumn(6, L"实际体积", LVCFMT_CENTER, 100, 0 );
ctrlList.InsertColumn(7, L"开始温度", LVCFMT_CENTER, 60, 0 );
ctrlList.InsertColumn(8, L"结束温度", LVCFMT_CENTER, 60, 0 );
ctrlList.InsertColumn(9, L"产品名称", LVCFMT_CENTER, 120, 0 );
ctrlList.InsertColumn(10, L"产品批次", LVCFMT_CENTER, 120, 0 );
ctrlList.InsertColumn(11, L"R值", LVCFMT_CENTER, 100, 0 );
ctrlList.InsertColumn(12, L"脉冲总数", LVCFMT_CENTER, 120, 0 );
//配置数据源
SQLConfigDataSource( //?? 异常
NULL,
ODBC_ADD_DSN,
_T("Microsoft Access Driver (*.mdb)"),
_T("DSN=WS8DB\0DBQ=d:\\pj\\pj.mdb\0")
);
CDatabase data;
data.Open(_T("WS8DB"), //?? 异常
FALSE,
FALSE,
_T("DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;PWD=pj135246;UID=admin;")
);
CRecordset ds( &data );
ds.Open( CRecordset::snapshot, L"SELECT * FROM 历史记录 ORDER BY 开始时间 DESC" ); //??
CDBVariant dbv;
for( int i = 0 ; !ds.IsEOF(); i++ )
{
CString str;
ds.GetFieldValue(1, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%i-%02i-%02i %02i:%02i", dbv.m_pdate->year, dbv.m_pdate->month, dbv.m_pdate->day, dbv.m_pdate->hour, dbv.m_pdate->minute );
int n = ctrlList.InsertItem( i, str );
ds.GetFieldValue(2, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%i-%i-%i %i:%02i", dbv.m_pdate->year, dbv.m_pdate->month, dbv.m_pdate->day, dbv.m_pdate->hour, dbv.m_pdate->minute );
ctrlList.SetItemText( n, 1, str );
ds.GetFieldValue(3, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%i", dbv.m_lVal );
ctrlList.SetItemText( n, 2, str );
ds.GetFieldValue(4, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%0.1f", dbv.m_dblVal );
ctrlList.SetItemText( n, 3, str );
ds.GetFieldValue(5, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%0.1f", dbv.m_dblVal );
ctrlList.SetItemText( n, 4, str );
ds.GetFieldValue(6, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%0.1f", dbv.m_dblVal );
ctrlList.SetItemText( n, 5, str );
ds.GetFieldValue(7, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%0.1f", dbv.m_dblVal );
ctrlList.SetItemText( n, 6, str );
ds.GetFieldValue(8, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%0.1f", dbv.m_dblVal );
ctrlList.SetItemText( n, 7, str );
ds.GetFieldValue(9, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%0.1f", dbv.m_dblVal );
ctrlList.SetItemText( n, 8, str );
ds.GetFieldValue(10, dbv);
ctrlList.SetItemText( n, 9, dbv.m_dwType == DBVT_NULL ? L"" : *dbv.m_pstringW );
ds.GetFieldValue(11, dbv);
ctrlList.SetItemText( n, 10, dbv.m_dwType == DBVT_NULL ? L"" : *dbv.m_pstringW );
ds.GetFieldValue(12, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%0.4f", dbv.m_dblVal );
ctrlList.SetItemText( n, 11, str );
ds.GetFieldValue(13, dbv);
if( dbv.m_dwType == DBVT_NULL )
str = L"";
else
str.Format( L"%i", dbv.m_lVal );
ctrlList.SetItemText( n, 12, str );
ds.MoveNext();
}
ds.Close();
}