猿问

想在OnTimer()函数中逐条读取ACCESS中的data数据并在编辑框中显示,​但是却没效果?

没效果怎么回事啊?
void CScopeTestDlg::OnTimer(UINT nIDEvent)
{
str="select * from USBData";
data.Open(CData::dynaset,_T(str));
m_display=data.m_data;//想将数据库中m_data显示到控件m_display
UpdateData(false);
data.MoveNext();
data.Close();
CDialog::OnTimer(nIDEvent);
}
控件数据不变化啊,把m_display=data.m_data用m_display=a++代替(a我设置的全局变量),空间的数值就会自动增加显示。怎么修改程序啊?

慕雪6442864
浏览 188回答 2
2回答

守着一只汪

你这个OnTimer是正常工作了,不过你的 程序逻辑有问题把 str="select * from USBData";data.Open(CData::dynaset,_T(str));这两句放在函数外面,比如程序的初始化函数里面!。你现在的问题是,每次调用OnTimer都是重新连接的数据库,然后都是显示的第一条数据,当然控件是不可能变化的了,你改成这样void CScopeTestDlg::OnTimer(UINT nIDEvent){while(....)//如果没有到达表的最后一条m_display = data.m_data;data.MoveNext();}在结束OnTimer函数时,才使用data.Close()关闭连接!回答OK

长风秋雁

m_display=data.m_data改成memcpy(&m_display, &(data.m_data),sizeof(m_display));
随时随地看视频慕课网APP
我要回答