高分求大神 一个很奇怪的有关问题 数据库的 MFC的

高分求大神 一个很奇怪的问题 数据库的 MFC的
void Sign::OnOK() 
{
UpdateData(TRUE);
try
{
CString sql,sql2;
sql.Format(" select * from LogInfo where StuNumber = '%s' and PassWord = '%s' ",m_Name,m_PassWord);
m_DataSet.Open(sql);

if (m_DataSet.GetRecordCount()==1)
{
if (m_DataSet.GetCollect("StuNumber")==m_DataSet.GetCollect("PassWord"))
{
AfxMessageBox("不允许使用初始密码!\n请修改你的密码!");
CDialog::OnOK();
ModifyPassWord dlg;
dlg.DoModal();

}
else
{
::SetUserName(m_Name);

int curyear,curmonth,curday;
char year[10],month[10];
CTime time(CTime::GetCurrentTime());
curyear = time.GetYear();
curmonth = time.GetMonth();
curday = time.GetDay();

itoa(curyear,year,10);
itoa(curmonth,month,10);

sql2.Format("select * from SignInfo where StuNumber = '%s' and Year = '%s' and Month = '%s'",m_Name,year,month);

m_DataSet1.Open(sql2);
if (m_DataSet1.GetRecordCount()==0)
{
CString name,group;
char value[10];
name=m_DataSet.GetCollect("Name");
group=m_DataSet.GetCollect("Lab");

m_DataSet1.AddNew();
m_DataSet1.SetFieldValue("StuNumber",(_variant_t)m_Name);
m_DataSet1.SetFieldValue("Name",(_variant_t)name);
m_DataSet1.SetFieldValue("Lab",(_variant_t)group);
itoa(curyear,value,10);
m_DataSet1.SetFieldValue("Year",(_variant_t)value);
itoa(curmonth,value,10);
m_DataSet1.SetFieldValue("Month",(_variant_t)value);
itoa(curday,value,10);
m_DataSet1.SetFieldValue("Day",(_variant_t)value);
m_DataSet1.SetFieldValue("Time",(_variant_t)"1");
m_DataSet1.Save();
}
else
{
int time;
char value[10];
time = atoi(m_DataSet1.GetCollect("Time"))+1;
itoa(time,value,10);
m_DataSet1.SetFieldValue("Time",(_variant_t)value);
}

MessageBox("签到成功!");
CDialog::OnOK();
}
}
else
{
AfxMessageBox("用户名或密码错误!");
m_PassWord="";
UpdateData(FALSE);
}

}
catch (_com_error& e)
{
CSignSystemDlg::dump_com_error(e);
}


}

运行时报错 Running Error! abnormal program termination  

如果注释掉m_DataSet1.SetFieldValue("Time",(_variant_t)value);(在MessageBox("签到成功!");前面)则运行正常 怎么回事啊

------解决方案--------------------
Time字段是什么数据类型,是用ADO吗?