MFC 中如何获得 Combo控件的值 不用UpdateData(),因为我用UpdateData()的时候每次都会在List控件上又加上好几列同样的列,恳求解决!void CMonday::On_XSzhuangtai()  
{
// TODO: Add your control notification handler code hereUpdateData(true);if(""==m_Com)
{
MessageBox("请选择上课时间!!!");
return;
}/* CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=JN;Initial Catalog=JSGL";
pConn->Open("","","",adConnectUnspecified);pRst.CreateInstance(_uuidof(Recordset));
try
{
pRst->Open("SELECT * FROM ClassBaseInf",pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
} _bstr_t bstrSQL="select C_num,Class,Teacher,Cn,L_name from ClassUseInf where Time='第一节课'";
pRst.CreateInstance(_uuidof(Recordset));
pRst->Open(bstrSQL,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);m_List2.DeleteAllItems();while(!pRst->adoEOF)
{
m_List2.InsertItem(0,"");
m_List2.SetItemText(0,0,(char*)(_bstr_t)pRst->GetCollect("C_num"));
m_List2.SetItemText(0,1,(char*)(_bstr_t)pRst->GetCollect("Class"));
m_List2.SetItemText(0,2,(char*)(_bstr_t)pRst->GetCollect("Teacher"));
m_List2.SetItemText(0,3,(char*)(_bstr_t)pRst->GetCollect("Cn"));
m_List2.SetItemText(0,4,(char*)(_bstr_t)pRst->GetCollect("L_name"));pRst->MoveNext();
}*/
}我想根据用户选择Combo控件中的值来动态写SQL语句_bstr_t bstrSQL="select C_num,Class,Teacher,Cn,L_name from ClassUseInf where Time='第一节课'";Combo中包括第一节课、第二节课、第三节课、第四节课!!!
希望懂得人能快快的给出正解!!!谢谢!!!

解决方案 »

  1.   

    CString str;
    m_List2.GetLBText(nIndex,str);
      

  2.   

    combox插入时选择属性sort为false  也就是按插入顺序索引为0,1,....cmb.GetCurSel()  能得到索引值  你就知道他选择的是什么啦
      

  3.   

    CComboBox* m_pcombobox;
    m_pcombobox=(CComboBox*)GetDlgItem(IDC_ComboBox1);
    m_pcombobox->GetItemData(int nIndex);
      

  4.   

    你的ComboBox控件是不是一个窗口类的成员?类似m_combox,就用它直接调用GetCurSel获取当前选择项的索引,然后用GetLBText获取某个索引对应的字符串;你的另外一个问题,多插入几列和你用UpdateData不存在必然联系吧?:(只是我的写法,你试试看可行否?不喜勿喷,3Q)
    m_List2.InsertItem(0,"");
    m_List2.SetItemText(0,0,(char*)(_bstr_t)pRst->GetCollect("C_num"));
    m_List2.SetItemText(0,1,(char*)(_bstr_t)pRst->GetCollect("Class"));
    m_List2.SetItemText(0,2,(char*)(_bstr_t)pRst->GetCollect("Teacher")); 
    m_List2.SetItemText(0,3,(char*)(_bstr_t)pRst->GetCollect("Cn"));
    m_List2.SetItemText(0,4,(char*)(_bstr_t)pRst->GetCollect("L_name"));
    这段代码是否存在问题?你改成
    m_List2.InsertItem(m_list2.GetItemCount(),(char*)(_bstr_t)pRst->GetCollect("C_num""));
    m_List2.SetItemText(0,1,(char*)(_bstr_t)pRst->GetCollect("Class"));
    m_List2.SetItemText(0,2,(char*)(_bstr_t)pRst->GetCollect("Teacher")); 
    m_List2.SetItemText(0,3,(char*)(_bstr_t)pRst->GetCollect("Cn"));
    m_List2.SetItemText(0,4,(char*)(_bstr_t)pRst->GetCollect("L_name"));
      

  5.   

    想起一个问题来了。你用PLSQL看看你的数据库里面是否存在几行一样的数据?也可以试试在while那设置一个断点,跟踪看看循环了几次。