你可以用COleDateTime类就可以了.

解决方案 »

  1.   

    可以用GetCurrentTime,
    利用GetLocalTm,要先建一个CTime对象
    CTime b(...);
    b.GetLocalTm(NULL);
    祥见MSDN.
      

  2.   

    to molight:你没有明白我的意思,在ODBC中RFX只能映射CTime,不能映射OleDateTime
    to personel:我就是用的GetLocalTm(NULL),结果返回的指针是空,后面就出错了。
    问题是CTime::GetYear()在内部调用的也是GetLocalTime(NULL),所以一用GetYear就报错,可是没有这个函数还不行!
      

  3.   

    怎么会呢,我试了试这段msdn的程序,没有问题
    // example for CTime::GetLocalTm
    CTime t( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999
    struct tm* osTime;  // A pointer to a structure containing time 
                        // elements.
    osTime = t.GetLocalTm( NULL );
    ASSERT( osTime->tm_mon == 2 ); // Note zero-based month!
      

  4.   

    panda_w:你那段代码确实是可以的,但是把构造参数设为空的就会出问题.问题是这个CTime是RFX自动生成的,我没有办法有构造函数初始化.
    我的代码看了半天也没有发现自己错在那里,请大家帮我查一查?
        try
        {
          pSet->AddNew();
          pSet->m_nIntField = rand();
          pSet->m_strTextField.Format("Test %d", rand());
          pSet->m_TimeField = CTime::GetCurrentTime();
          pSet->Update(); // 到这里报Access Violation,用Call Stack找到出错的地方是CTime::GetYear
        }
        catch(CDBException* e)
        {
          e->ReportError();
          e->Delete();
        }
      

  5.   

    你把ctime改成coledatetime就行了
    如果你用的是VC6的话。
      

  6.   

    为什么都不看清楚?我说过RFX里面不能用COleDateTime了!
      

  7.   

    当然行了。只要VC6以上的。都可以把CTIME改在COleDateTime.........
    我就一直这样做。。:-*
      

  8.   

    对不起!只是我没有想到可以这样用!为什么行呢?COleDateTime并不是从CTime派生的啊。