读书人

怎么显示数据表的内容在一个list ctrl

发布时间: 2012-02-29 16:44:11 作者: rapoo

如何显示数据表的内容在一个list ctrl中
void CEstimateDlg::OnShow()
{
if(m_pSet.IsOpen())
{
m_pSet.Close();
}
CString str=dlg.strList;
CString s;
s.Format( "select * from %s ",str);
m_pSet.Open(dbOpenSnapshot,s,0); // ?问题可能出现在这一行,但不知道如何改
m_pSet.MoveFirst();

this-> count = 0;
CString cs;
m_list.DeleteAllItems();
while (!m_pSet.IsEOF())
{
cs.Format( "%d ",m_pSet.m_ID);
m_list.InsertItem(count,cs,0);
m_list.SetItemText(count,0,cs);

cs.Format( "%d ",m_pSet.m_column1);
m_list.SetItemText(count,1,cs);

cs.Format( "%.9f ",(double)m_pSet.m_column2);
m_list.SetItemText(count,2,cs);

m_pSet.MoveNext();
count++;
}

}
m_pSet是我定义的继承自cdaorecordset的类csysdaorecordset的对象,函数onshow()想实现在一个对话框dlg中选择数据表的名称(数据表名用cstring strlist来保存),然后在一个list ctrl中将数据表的数据显示出来,高手帮我看一下这段程序怎么了?

[解决办法]
查了一下msdn
,对于
CDaoRecordset::Open

这个函数来说,好像第一个参数应该是int nOpenType = AFX_DAO_USE_DEFAULT_TYPE

virtual void Open( int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, int nOptions = 0 );

dbOpenSnapshot 是什么

try
{
m_pSet.Open(dbOpenSnapshot,s,0);

}
catch( CDaoException* e )
{
AfxMessageBox(
e-> m_pErrorInfo-> m_strDescription,
MB_ICONEXCLAMATION );
// Delete the incomplete recordset object
delete m_pSet;
m_pSet = NULL;
e-> Delete();
}



[解决办法]
m_pRecordset-> Open(_variant_t(bstrQuery),vNull,adOpenDynamic,adLockOptimistic,adCmdText);

打开数据库,我用的是这条。参数我也不是很明白,但确实可以用。

m_pRecordset 是_RecordsetPTR指针

对了,我用的是ADO技术。
[解决办法]
既然你用ADO,怎么还说

“m_pSet是我定义的继承自cdaorecordset的类csysdaorecordset的对象”

我晕了

关于ADO,
看这个

http://blog.csdn.net/handsomerun/archive/2006/08/12/1055311.aspx

读书人网 >VC/MFC

热点推荐