recordset有getfieldvalue,但是没有setfieldvalue,高手指点一下怎么实现setfieldvalue好吗?

解决方案 »

  1.   

    if(!m_set.IsOpen())
    m_set.Open();
    m_set.AddNew();
    m_set.m_1=...;
    m_set.m_2=..;
    m_set.Update();
    m_set.close();
    其中m_1,m_2分别是m_set的成员变量,是数据库中的字段描述,都是CString类型的。
      

  2.   

    在程序中经过数据库查询后,系统将查询的结果存放在一块内存field中,而GetFieldValue就则是根据你的需要再从field中取出你所需要的数据,如:m_pRs->GetFieldValue("Name",strName);所以当然没有什么SetFieldValue阿~~~如果你需要插入数据,如在CListCtrl控件中插入数据的话那需要使用的是SetItemText
    详细使用见MSDN
      

  3.   

    但是CRecordset没有那几个成员变量啊
    只有几个数据成员,但是没有字段的东西啊
      

  4.   

    如果你要改变 field的域值的话,直接用SQL语句啊!
    “ set  ......."
    "alter............"
    等等啊
      

  5.   

    能不能给个正确答案啊,注明我用的是ADO,并没有采用DAO,要不然就不会有这个问题了
      

  6.   

    CString type;
    if (m_strType == "工作日志")
    type = "worklog";
    else if (m_strType == "本周总结") 
    type = "summary";
    else if (m_strType == "下周计划") 
    type = "log_plan";

    HRESULT hr;
    CString strSQL = "SELECT * FROM ";
    strSQL += type;

    _bstr_t bstrQuery = strSQL;
    _bstr_t bstrType = type;
    _bstr_t bstrText = m_text;
    _variant_t vNull;
    vNull.vt = VT_ERROR;
    vNull.scode = DISP_E_PARAMNOTFOUND; CWorkLogApp* pApp = (CWorkLogApp*)AfxGetApp();

    if (m_text.IsEmpty()) 
    AfxMessageBox("所需存储的记录无内容!");
    else
    {
    try
    {
    hr = pApp->m_pRecordset.CreateInstance(__uuidof(Recordset));
    if(SUCCEEDED(hr))
    {
    pApp->m_pRecordset->PutRefActiveConnection(pApp->m_pDBConnection);
    hr = pApp->m_pRecordset->Open(_variant_t(bstrQuery), vNull, 
    adOpenForwardOnly, adLockOptimistic, adCmdText);

    COleSafeArray vaFieldlist;
    vaFieldlist.CreateOneDim(VT_VARIANT, 3);

    long lArrayIndex[1];
    lArrayIndex[0] = 0;
    vaFieldlist.PutElement(lArrayIndex, &(_variant_t("user_name")));
    lArrayIndex[0] = 1;
    vaFieldlist.PutElement(lArrayIndex, &(_variant_t("log_date")));
    lArrayIndex[0] = 2;
    vaFieldlist.PutElement(lArrayIndex, &(_variant_t(bstrType)));


    COleSafeArray vaValuelist;
    vaValuelist.CreateOneDim(VT_VARIANT, 3);

    lArrayIndex[0] = 0;
    vaValuelist.PutElement(lArrayIndex, &(_variant_t(m_pUser->GetName())));
    lArrayIndex[0] = 1;
    CString strTime;
    strTime.Format("%d-%d-%d", m_tDate.GetYear(), m_tDate.GetMonth(), m_tDate.GetDay());
    _bstr_t bstrTime = strTime;
    vaValuelist.PutElement(lArrayIndex, &(_variant_t(bstrTime)));
    lArrayIndex[0] = 2;
    vaValuelist.PutElement(lArrayIndex, &(_variant_t(bstrText)));

    pApp->m_pRecordset->AddNew(vaFieldlist, vaValuelist);
    pApp->m_pRecordset->Close();
    }
    AfxMessageBox("储存成功!");
    }
    catch(_com_error &e)
    {
    TRACE("Error:%08lx.\n", e.Error());
    TRACE("ErrorMessage:%s.\n", e.ErrorMessage());
    TRACE("Source:%s.\n", (LPCTSTR)_bstr_t(e.Source()));
    TRACE("Description:%s.\n", (LPCTSTR)_bstr_t(e.Description()));
    }
    catch(...)
    {
    TRACE("Exception occurred!\n");
    }
    }