VARIANT va;
va.vt = VT_I4;
va.lVal = 0;
m_pRs->GetFields()->GetItem(va)->GetName();//这一名程序会出错

解决方案 »

  1.   

    _variant_t var = m_pRs->GetFields()->GetItem(_variant(long(i)))->GetName();//
    CString strFieldName = (char*)((_bstr_t)var);
      

  2.   

    下面是打开一个表并且把字段名设置成ListCtrl的列名
    long c = 0;
    FieldsPtr fields;
    fields = m_pRecordset->GetFields();
    fields->get_Count(&c);
    CString header[1000];
    for(;;)
    {
    if(!(this->m_list.DeleteColumn(0)))
    {
    break;
    }
    }
    for(int i=0;i<(c);i++)
    {
    Field * field = NULL;
    VARIANT ind;
    ind.vt = VT_I4;
    ind.lVal = i;
    //获取Field对象:
    m_pRecordset->Fields->get_Item(ind,&field);
    //获取字段名:
    if(field)
    {
    //获取字段值:
    _variant_t var,value;
    var = field->GetName();
    header[i] = var.bstrVal;
    }
    if(i==0)
      this->m_list.InsertColumn(i,header[i],LVCFMT_LEFT, 50, -1);
    if(i==1)
      this->m_list.InsertColumn(i,header[i],LVCFMT_LEFT, 160, -1);
    if(i==2)
      this->m_list.InsertColumn(i,header[i],LVCFMT_LEFT, 40, -1);
    if(i==3)
      this->m_list.InsertColumn(i,header[i],LVCFMT_LEFT, 140, -1);
    if(i==4)
      this->m_list.InsertColumn(i,header[i],LVCFMT_LEFT, 60, -1);
    if(i>4)
      this->m_list.InsertColumn(i,header[i],LVCFMT_LEFT, 450/(c), -1);
       }