请问我用的是access数据库,ODBC数据源,想在点击登录按钮时将登录的账户和系统时间写进数据库的一个表中,请问我应该在哪里添加代码,添加什么代码?
                           
  

解决方案 »

  1.   

    使用类向导生成一个你指定数据库的支持文件,生成的文件里就会包含表中的字段,时间是会是CTime型
    SYSTEMTIME SystemTime={0};   
    GetLocalTime(&SystemTime); 
    dbDate = CTime(&SystemTime);http://msdn.microsoft.com/en-us/library/ms187819(v=SQL.90).aspx?PHPSESSID=tn8k5p1s508cop8gr43e1f34d2
      

  2.   

    在onbutton函数里面添加代码,我也是新手不知道,添加些什么代码
      

  3.   

    其实你不用那么麻烦,建表时,把存储时间的那个字段(比如叫'LogonTime')的默认值设为now()并且不能为NULL就行了。
    插入一行数据时,Logontime字段就是当前系统的时间了.
      

  4.   

    多谢大家指点我已经能获取系统时间了,可是又出现一个问题;我新建了一个表专有三项,来存放用户名,登录时间和退出时间,不过退出时间总是不和前两个在同一行里是为什么?
    下面是我登录的代码
     void chxdl::OnOK() 
    {
    // TODO: Add extra validation here
    dlxx m_dlxx;
    UpdateData(TRUE);
    yhbiao m_yhbiao;
        try
    {
    if(m_yhbiao.IsOpen())
    m_yhbiao.Close();
    m_yhbiao.m_strFilter.Format("userID = '%s' and userpwd = '%s'",m_yhzhh,m_yhmm);
    m_yhbiao.Open(CRecordset::snapshot,NULL,CRecordset::none);
    if(m_yhbiao.IsEOF())
    {
    m_yhbiao.Close();
    AfxMessageBox("密码错误,请重试!");
    return;
    }
    else
    {
    m_yhbiao.Close();
    AfxMessageBox("密码正确,登录成功!");
               //获取系统时间
    CTime   m_CurTime   =   CTime::GetCurrentTime(); //获取当前时间  
    CTime::GetCurrentTime();   
    CString   m_sYear;   
    CString   m_sMonth;   
    CString   m_sDay;   
    CString   m_sHour;   
    CString   m_sMinute;   
    char   m_str[20];   
    itoa(m_CurTime.GetYear(),m_str,10);   
    m_sYear   =   m_str;   
    itoa(m_CurTime.GetMonth(),m_str,10);   
    m_sMonth   =   m_str;   
    itoa(m_CurTime.GetDay(),m_str,10);   
    m_sDay   =   m_str;   
    itoa(m_CurTime.GetHour(),m_str,10);   
    m_sHour   =   m_str;   
    if(strlen(m_str)==1)   //对于时,分,若只有一位,需要在其前面补零   
    {   
    m_sHour.Insert(0,'0');   
    }   
    itoa(m_CurTime.GetMinute(),m_str,10);   
    m_sMinute = m_str;   
    if(strlen(m_str)==1)   
    {   
    m_sMinute.Insert(0,'0');   
    }   
        
          CString   m_CreateTime;       
          m_CreateTime.Format("%s-%s-%s   %s:%s",m_sYear,m_sMonth,m_sDay,m_sHour,m_sMinute); 
     //写进表中
      m_dlxx.Open();
      m_dlxx.AddNew();
      m_dlxx.m_userID=m_yhzhh;
      m_dlxx.m_entertime=m_CreateTime;
      m_dlxx.Update();
      m_dlxx.Close();
    }
    }
    catch(CDBException*e)
    {
    e->ReportError ();
    e->Delete ();
    return;
    }
    CDialog::OnOK();
    }这是我退出系统的代码:
    void CMainFrame::OnExitsystem() //退出系统菜单
    {
    // TODO: Add your command handler code here
    int t;
    t=MessageBox("您确定要退出吗?","退出",MB_OKCANCEL|MB_ICONWARNING);
    if (t==0||t==IDCANCEL)
    return;
    if(t==IDOK)
    PostQuitMessage(0);
    //退出系统时将用户的退出时间写进表里
                dlxx m_dlxx;
    //下面这段代码生成当前的系统时间
    CTime   m_CurTime   =   CTime::GetCurrentTime(); //获取当前时间  
    CTime::GetCurrentTime();   
    CString   m_sYear;   
    CString   m_sMonth;   
    CString   m_sDay;   
    CString   m_sHour;   
    CString   m_sMinute;   
    char   m_str[20];   
    itoa(m_CurTime.GetYear(),m_str,10);   
    m_sYear   =   m_str;   
    itoa(m_CurTime.GetMonth(),m_str,10);   
    m_sMonth   =   m_str;   
    itoa(m_CurTime.GetDay(),m_str,10);   
    m_sDay   =   m_str;   
    itoa(m_CurTime.GetHour(),m_str,10);   
    m_sHour   =   m_str;   
    if(strlen(m_str)==1)   //对于时,分,若只有一位,需要在其前面补零   
    {   
    m_sHour.Insert(0,'0');   
    }   
    itoa(m_CurTime.GetMinute(),m_str,10);   
    m_sMinute = m_str;   
    if(strlen(m_str)==1)   
    {   
    m_sMinute.Insert(0,'0');   
    }   
        
          CString   m_CreateTime;       
          m_CreateTime.Format("%s-%s-%s   %s:%s",m_sYear,m_sMonth,m_sDay,m_sHour,m_sMinute); 
     //将采集的时间写进表里   
      m_dlxx.Open();
          m_dlxx.Delete();
      m_dlxx.AddNew();   
      m_dlxx.m_exittime=m_CreateTime;
      m_dlxx.Update();
      m_dlxx.Close();}
    请大家帮忙看看,怎样让三个量在同一行里面。谢谢了。
      

  5.   

    退出的时间应该更新到上一个记录中 而不应该用m_dlxx.AddNew()添加新纪录