怎么显示数据表的内容在一个list ctrl中
如何显示数据表的内容在一个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.****.net/handsomerun/archive/2006/08/12/1055311.aspx
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.****.net/handsomerun/archive/2006/08/12/1055311.aspx