使用Access库,用COleVariant,SetFieldValue(),GetFieldValue(),如何读出和写入日期型数据?
请给个范例,谢谢!!!!!!!!!!!!!!!

解决方案 »

  1.   

    对 COleVariant 值进行转换即可,下面是转换的小函数,十分简单:
    日期到变体
    VARIANT SetVariate(DATE date)
    {
    COleDateTime tm=COleDateTime(date);
    COleVariant vtN=tm ;
    return (VARIANT)vtN;
    }
    变体到日期DATE VariateToDate(VARIANT &vt)
    {
    return vt.date;
    }DATE 类型的使用应该没有问题吧! 
      

  2.   

    这是我用的OleDB的代码,也给你参考吧inline bool ValueParser_ForDate (DBTYPE typeThe, LPVOID lpvValue, COleDateTime *pdtValue)
    {
      if (NULL == lpvValue)
        return false;
      COleDateTime dtTemp;
      switch (typeThe)
      {
      default :
      { 
        return false;
        break;
      }  // 日期时间(DBTYPE_FILETIME在OLEDBVER >= 0x0200时)
      case DBTYPE_DATE       :dtTemp =GetValueDateDate((DATE*)lpvValue); break;
      case DBTYPE_DBDATE     :dtTemp =GetValueDateDBDate(DBDATE*)lpvValue, NULL); break;
      case DBTYPE_DBTIME     :dtTemp =GetValueDateDBDate(NULL, (DBTIME*)lpvValue); break;
      case DBTYPE_DBTIMESTAMP:dtTemp =GetValueDateDBStamp ((DBTIMESTAMP*)lpvValue); break;
      case DBTYPE_FILETIME   :dtTemp =GetValueDateFiletime((FILETIME*)pdtValue); break;
      }  if (NULL  !=  pdtValue)
        *pdtValue = dtTemp;  return true;
    }
      

  3.   

    #define  BAD_DATE       COleDateTime(1906,05,04,  03,02,01)
    #define  NULL_DATE     COleDateTime(1901,01,01,  01,01,01)
    COleDateTime CDBExtractContentHelper::GetValueDateDBDate (DBDATE *pdtValueDate, DBTIME *pdtValueTime)
    {
      TRY
      {
        if (NULL==pdtValueDate  &&  NULL==pdtValueTime)
          return BAD_DATE;    COleDateTime  dtTemp  = DBDATE_DBTIME_DEFAULT_DATE;
        if (NULL  !=  pdtValueDate)
          dtTemp.SetDate (pdtValueDate->year, pdtValueDate->month, pdtValueDate->day);    if (NULL  !=  pdtValueTime)
          dtTemp.SetTime (pdtValueTime->hour, pdtValueTime->minute, pdtValueTime->second);    return dtTemp;
      }
      CATCH_ALL (e)
      {
        return BAD_DATE;
      }
      END_CATCH_ALL
    }COleDateTime CDBExtractContentHelper::GetValueDateDBStamp (DBTIMESTAMP *pdtValue)
    {
      TRY
      {
        if (NULL  ==  pdtValue)
          return BAD_DATE;    return COleDateTime
        (
          pdtValue->year, pdtValue->month, pdtValue->day,
          pdtValue->hour, pdtValue->minute, pdtValue->second
        );
      }
      CATCH_ALL (e)
      {
        return BAD_DATE;
      }
      END_CATCH_ALL
    }COleDateTime CDBExtractContentHelper::GetValueDateDate (DATE *pdtValue)
    {
      TRY
      {
        if (NULL  ==  pdtValue)
          return BAD_DATE;    return COleDateTime(*pdtValue);
      }
      CATCH_ALL (e)
      {
        return BAD_DATE;
      }
      END_CATCH_ALL
    }COleDateTime CDBExtractContentHelper::GetValueDateFiletime (FILETIME *pdtValue)
    {
      TRY
      {
        if (NULL  ==  pdtValue)
          return BAD_DATE;    return COleDateTime(*pdtValue);
      }
      CATCH_ALL (e)
      {
        return BAD_DATE;
      }
      END_CATCH_ALL
    }