BOOL CRktj::OnInitDialog() 
{
CDialog::OnInitDialog();
for (int i=0; i<iCount; i++)
{
    Holder = theApp.m_pADOSet->GetCollect("bjbh");
        ((CComboBox*)GetDlgItem(IDC_COMBO1))->InsertString(i, Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder);
if (0==i)
{ Holder = theApp.m_pADOSet->GetCollect("bjmc");
m_sBjm = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
    
Holder = theApp.m_pADOSet->GetCollect("bjxh");
m_sBjxh = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
 
Holder = theApp.m_pADOSet->GetCollect("bjlb");
m_sBjlb = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("bjdw");
m_sBjdw = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;

}
theApp.m_pADOSet->MoveNext();
}
((CComboBox*)GetDlgItem(IDC_COMBO1))->SetCurSel(0);
}
在显示的时候,CCombobox中是空白的。
void CRktj::OnSelchangeCombo1() 
{
    UpdateData(true);
_variant_t Holder;
_bstr_t strQuery;
//
AfxMessageBox("aa");
strQuery = "select * from jbxxb where bjbh='"+m_sBjbh+"' order by bjbh";
AfxMessageBox(strQuery);
theApp.m_pADOSet.CreateInstance(_uuidof(Recordset));
theApp.m_pADOSet->Open(strQuery,theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
AfxMessageBox("aa");    
if (!theApp.m_pADOSet->EndOfFile)
{
Holder = theApp.m_pADOSet->GetCollect("bjmc");
m_sBjm = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("bjxh");
m_sBjxh = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
 
Holder = theApp.m_pADOSet->GetCollect("bjlb");
m_sBjlb = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; Holder = theApp.m_pADOSet->GetCollect("bjdw");
m_sBjdw = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
 
}
    UpdateData(false);
}
重新选择后,查询中到SQL语句中的是上次的选择值。而不是我本次选择的值。请问这是怎么回事?如何解决?

解决方案 »

  1.   

    直接用GetDlgItem(IDC_COMBO)->GetWindowText()试试AfxMessageBox(strQuery);这里显示结果怎么样!可以看出是COMBOBOX的数据交换问题吧?再用AfxMessageBox看看你InsertString插入是否为空
      

  2.   

    我也遇到过同样问题,郁闷了很久,其实代码没毛病,把原来的COMBOBOX删掉然后用鼠标重新拖一个进去(当然,代码也要映射成新的那个ID)或者在程序中CREATE就解决了。
      

  3.   

    数据库没有问题,而且下拉框里也有数据,但是
    ((CComboBox*)GetDlgItem(IDC_COMBO1))->SetCurSel(0);
    不起作用,而且改变下拉框中的值的时候,得到下拉框的值为下拉框在重新选择之前的值,而不是我重新选择的值。
    比如下拉框里有1,2,3三个选项,如果现在下拉框里显示的是1,那我在下拉列表中选择2,但是读取到的值是1,而不是2