我用单文档建立了一个界面实现对SQL数据的操作 在菜单中设了“查询”这个弹出菜单项 实现了对一个表的查询 以clistctrl形式显示 现在我想对显示的表项右键弹出菜单 删除选中的记录 问题是界面上所有的都是实现了 但是数据库里面的记录没有删除掉 我用
void CMONITORSYSView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult) 
{
// TODO: Add your control notification handler code here
//右击直接删除记录
/* CListCtrl& theCtrl = GetListCtrl(); 
int nSelect = theCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED); 
theCtrl.DeleteItem(nSelect ); //nSelect 为行号*/
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    if(pNMListView->iItem != -1)
{
DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

CMenu menu;
VERIFY( menu.LoadMenu( IDR_POPUPMENU ) );
CMenu* popup = menu.GetSubMenu(0);
ASSERT( popup != NULL );
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); } *pResult = 0;
}函数实现右键弹出菜单
void CMONITORSYSView::OnItemDelete() 
{
// TODO: Add your command handler code here
CListCtrl& theCtrl = GetListCtrl(); 
int nSelect = theCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED); 
theCtrl.DeleteItem(nSelect ); //nSelect 为行号*/
/*try 
{
if(!m_recordset->adoEOF) 
{
m_recordset->MoveFirst();
m_recordset->Move((long)nSelect);
m_recordset->Delete(adAffectCurrent);
m_recordset->Update();
}
}
catch(_com_error e) 

MessageBox(e.Description());
} */}
实现删除ListCtrl记录 没有问题 问题是数据库里面的记录还在 把上面的程序中注释的部分加上就说“对象关闭时不容许操作” 我也知道我在查询完已经close()记录集了 现在我想在OnItemDelete() 函数中获取记录集怎么弄呢 先前查询的时候是要给出对应的表名的 现在删除我想右击弹出的“删除”菜单就可以删除 所以没有给出表名 怎么实现呢 有一个笨办法就是获取某一列的列名 然后switch 判断 是哪个表 然后再打开记录集 这样就太笨了 有没有什么好办法呢 大家帮帮忙