沒效果怎么回事啊?void CScopeTestDlg::OnTimer(UINT nIDEvent){str="select * from USBData";data.Open(CData::dynaset,_T(str));m_display=data.m_data;//想將數據庫中m_data顯示到控件m_displayUpdateData(false);data.MoveNext();data.Close();CDialog::OnTimer(nIDEvent);}控件數據不變化啊,把m_display=data.m_data用m_display=a++代替(a我設置的全局變量),空間的數值就會自動增加顯示。怎么修改程序啊?
2 回答

守著一只汪
TA貢獻1872條經驗 獲得超4個贊
你這個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

長風秋雁
TA貢獻1757條經驗 獲得超7個贊
m_display=data.m_data
改成memcpy(&m_display, &(data.m_data),sizeof(m_display));
- 2 回答
- 0 關注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消