读书人

哪位看下是哪里出了有关问题呀

发布时间: 2012-03-06 20:47:55 作者: rapoo

哪位看下是哪里出了问题呀?
void CCTreeListTestDlg::InitList()
{
m_hTree = m_WndTree.GetSelectedItem();//m_WndTree为CTreeCtr
m_WndList.DeleteAllItems();//_WndList为CListCtr
CListCtrl* pCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1);
ASSERT(pCtrl != NULL);

CString str_ItemData;
int ItemData;
if(m_hTree == NULL)
ItemData = 493;
else
ItemData = m_WndTree.GetItemData(m_hTree);
str_ItemData.Format(_T( "%d "),ItemData);

try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
}
catch(_com_error *e)
{
AfxMessageBox(e-> ErrorMessage());
}
try
{
CString strSQL;
strSQL=CString( "select TABLE_ID,NODE_NAME from TR_ENTERPRISE where PARENT_ID = ")+str_ItemData;
BSTR bstrSQL = NULL;
bstrSQL = strSQL.AllocSysString();
m_pRecordset-> Open(bstrSQL, // m_AdoConn.m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,
adCmdText);

if(!m_pRecordset-> BOF)
m_pRecordset-> MoveFirst();
else
{
AfxMessageBox(_T( "表内数据为空 "));

}

CString str_ReadFromDB;
int index;
int i = 0;
_variant_t var;
// 读入库中各字段并加入列表框中
while(!m_pRecordset-> adoEOF)
{
var = m_pRecordset-> GetCollect( "TABLE_ID ");
if(var.vt != VT_NULL)
index = var.iVal;
var = m_pRecordset-> GetCollect( "NODE_NAME ");
if(var.vt != VT_NULL)
str_ReadFromDB = (LPCSTR)_bstr_t(var);

str_ReadFromDB.TrimRight(_T( " ")); // 除去空格
if(str_ReadFromDB!=_T( " "))
{
pCtrl-> InsertItem(i, str_ReadFromDB);
pCtrl-> SetItemData(i, index);
i++;
}

m_pRecordset-> MoveNext();
}
SysFreeString(bstrSQL);

}
catch(_com_error *e)
{
AfxMessageBox(e-> ErrorMessage());
}
m_pRecordset-> Close();
m_pRecordset = NULL;

UpdateData(FALSE);
}


void CCTreeListTestDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here

this-> InitTree();
m_WndList.SetSelectionMark(0);
*pResult = 0;
}


这只是部分代码,就是一个Tree control 和一个 list control 当点击树控件中的一项时候,列表控件从数据库中读取数据写入,在OnSelchangedTree1中响应函数中调用InitTree()时,总是出现runtime error , 但是在CCTreeListTestDlg.cpp 中的其他地方调用时,就没有问题,哪位大哥帮帮忙,帮忙解决一下

[解决办法]
catch(_com_error *e)
应该是catch(_com_error &e)

m_pRecordset-> Close();
也要放catch里去……
[解决办法]
另外,InitTree()的代码在哪里;
------解决方案--------------------


数据还没准备好

读书人网 >VC/MFC

热点推荐