大家好,有问题想要大家帮忙!
问题是:有一个combox,想要和数据库中的一张表象链接,也就是说combox的data内容是数据库中一张表的内容,大家有什么好的意见哪?
下面是源代码:
BOOL BasicInfoInsertDlg::OninitDialog()
{
CDialog::OnInitDialog();
CString strSQL;
CDBVariant var;
int i=0;
CComboBox *pYardsCom=(CComboBox *)GetDlgItem(IDC_Yards);
if(!m_database.IsOpen())//于数据链接
{
if(!m_database.Open(_T("学生管理系统")))
ASSERT("不能打开数据库的连接!");
}

CRecordset rs(&m_database); 、、在combox框中插入数据库中的数据
strSQL.Format("select Academy_Name from Dic_Academy");
if(rs.GetRecordCount()!=0) rs.MoveFirst();
rs.Open(CRecordset::forwardOnly,strSQL);
while(rs.IsEOF())
{
int temp=0;
rs.GetFieldValue(temp,var);
pYardsCom->InsertString(i,var.m_pstring->GetBuffer(1));
rs.MoveNext();
i++;
}
return CDialog::OnInitDialog();
}
我得程序编译没有错误,但是combox框中没有显示数据,我得combox的style为drop list,请问大家有没有办法哪?

解决方案 »

  1.   

    BOOL BasicInfoInsertDlg::OninitDialog()
    {
    CDialog::OnInitDialog();
    CString strSQL;
    CDBVariant var;
    int i=0;
    CComboBox *pYardsCom=(CComboBox *)GetDlgItem(IDC_Yards);
    if(!m_database.IsOpen())//于数据链接
    {
    if(!m_database.Open(_T("学生管理系统")))
    ASSERT("不能打开数据库的连接!");
    }

    CRecordset rs(&m_database); 、、在combox框中插入数据库中的数据
    strSQL.Format("select Academy_Name from Dic_Academy");
    //if(rs.GetRecordCount()!=0) rs.MoveFirst(); //表还没有打开呢!
    rs.Open(CRecordset::forwardOnly,strSQL);
    while(!rs.IsEOF()) //逻辑反了
    {
    int temp=0;
    rs.GetFieldValue(temp,var);
    pYardsCom->InsertString(i,var.m_pstring->GetBuffer(1));
    rs.MoveNext();
    i++;
    }
    return CDialog::OnInitDialog();
    }
      

  2.   

    打开资源编辑器,单击你的组合框控件的下拉按钮,然后向下拉,使drop list 的范围向下扩大,这样才会在运行时才会出现drop list 。  combox  和它的 drop list要分别设计大小。