CStringA Name; //⼀Ϛ
CStringA Sex; //⼀Ϛ
CTime Date; //⼀Ϛ
CStringA SNumber; //⼀Ϛ
CStringA GNumber; //⼀Ϛ
CStringA WClass; //⼀Ϛ
CStringA PNumber; //⼀Ϛ
RFX_Single(pFX, _T("[员工号]"), WNumber);
RFX_Text(pFX, _T("[姓名]"), Name);
RFX_Text(pFX, _T("[性别]"), Sex);
RFX_Date(pFX, _T("[进厂时间]"), Date);
RFX_Text(pFX, _T("[车间编号]"), SNumber);
RFX_Text(pFX, _T("[小组编号]"), GNumber);
RFX_Text(pFX, _T("[工种]"), WClass);
RFX_Text(pFX, _T("[联系方式]"), PNumber);
add.record.WNumber=30000;
add.record.Name=_T("艾丝薇儿");
add.record.Sex=_T("男");
CTime time(1992,5,20,0,0,0);
add.record.Date=time;
add.record.SNumber=_T("S001");
add.record.GNumber=_T("L001");
add.record.WClass=_T("收发");
add.record.PNumber=_T("15971363025");
add.record.Update();
add.record.Close();
数据插不进去 求解答 本例有用add.record.AddNew()
调试定位错误为:
BOOL CRecordset::Update()
{
ASSERT_VALID(this);
ASSERT(m_hstmt != SQL_NULL_HSTMT);//断点落在此处
if (m_dwOptions & useMultiRowFetch)
{
// Can't use update methods on multi-row rowset
ASSERT(FALSE);
return FALSE;
}
if (m_nEditMode != addnew && m_nEditMode != edit)
{
TRACE(traceDatabase, 0, _T("Error: must enter Edit or AddNew mode before updating.\n"));
ThrowDBException(AFX_SQL_ERROR_ILLEGAL_MODE);
}
return UpdateInsertDelete();
}
10 个解决方案
#1
只看到Close 没看到Open啊
#2
有Open();
#3
try
{
CRecordset rs;
if(rs.Open())
{
if(rs.CanUpdate()) //非只读
{
//先查看记录是否存在
rs.m_strFilter = _T("姓名 = '艾丝薇儿'");
rs.Requery();
if(rs.GetRecordCount() > 0)//存在记录编辑 否则添加
rs.Edit();
else
rs.AddNew();
//更新数据
rs.Name=_T("艾丝薇儿");
rs.Sex=_T("男");
//更新到数据库
rs.Update();
}
rs.Close();
}
}
catch (CDBException* e)
{
e->ReportError();
e->Delete();
}
#4
不行咯 这个是插不进去 我的那一个帖子 你也回复了的 就是插的进去 但是 出现问题
#5
这个是我故意设的不与表中的主键重值 等记录可以插了再完善
rs.m_strFilter = _T("姓名 = '艾丝薇儿'");
rs.Requery();
if(rs.GetRecordCount() > 0)//存在记录编辑 否则添加
rs.m_strFilter = _T("姓名 = '艾丝薇儿'");
rs.Requery();
if(rs.GetRecordCount() > 0)//存在记录编辑 否则添加
#6
我的这个今天突然可以插值了 但是出现了
http://topic.csdn.net/u/20120225/12/ac3de8f1-bdbd-4015-a8bc-ea209f7bd845.html
和上面这个一样的错误啊 如果这个解决了 就成功了
#7
判断各记录的值是否正确,是不是有空值,语句应该没问题,有时候能插进去有时不能,可能是什么值有时符合要求有时不符合要求.这得用一步一步执行或在估计有问题的地方设断点执行
#8
嗯 是这样的 但是插的进去了 现在 就是出现了我以前发的一个帖子中同样的错误:http://topic.csdn.net/u/20120225/12/ac3de8f1-bdbd-4015-a8bc-ea209f7bd845.html
#9
看数据库结构里的每一个字段属性,如果某个字段有限制,比如非空,长度等限制,先去掉再试试,另外,时间格式和计算机设置有关,是不是时间格式不对,我以前碰到这情况
#10
不会是时间格式的问题 你去看我的另一个帖子吧 那一个代码少很多 是测试用的
http://topic.csdn.net/u/20120225/12/ac3de8f1-bdbd-4015-a8bc-ea209f7bd845.html
#1
只看到Close 没看到Open啊
#2
有Open();
#3
try
{
CRecordset rs;
if(rs.Open())
{
if(rs.CanUpdate()) //非只读
{
//先查看记录是否存在
rs.m_strFilter = _T("姓名 = '艾丝薇儿'");
rs.Requery();
if(rs.GetRecordCount() > 0)//存在记录编辑 否则添加
rs.Edit();
else
rs.AddNew();
//更新数据
rs.Name=_T("艾丝薇儿");
rs.Sex=_T("男");
//更新到数据库
rs.Update();
}
rs.Close();
}
}
catch (CDBException* e)
{
e->ReportError();
e->Delete();
}
#4
不行咯 这个是插不进去 我的那一个帖子 你也回复了的 就是插的进去 但是 出现问题
#5
这个是我故意设的不与表中的主键重值 等记录可以插了再完善
rs.m_strFilter = _T("姓名 = '艾丝薇儿'");
rs.Requery();
if(rs.GetRecordCount() > 0)//存在记录编辑 否则添加
rs.m_strFilter = _T("姓名 = '艾丝薇儿'");
rs.Requery();
if(rs.GetRecordCount() > 0)//存在记录编辑 否则添加
#6
我的这个今天突然可以插值了 但是出现了
http://topic.csdn.net/u/20120225/12/ac3de8f1-bdbd-4015-a8bc-ea209f7bd845.html
和上面这个一样的错误啊 如果这个解决了 就成功了
#7
判断各记录的值是否正确,是不是有空值,语句应该没问题,有时候能插进去有时不能,可能是什么值有时符合要求有时不符合要求.这得用一步一步执行或在估计有问题的地方设断点执行
#8
嗯 是这样的 但是插的进去了 现在 就是出现了我以前发的一个帖子中同样的错误:http://topic.csdn.net/u/20120225/12/ac3de8f1-bdbd-4015-a8bc-ea209f7bd845.html
#9
看数据库结构里的每一个字段属性,如果某个字段有限制,比如非空,长度等限制,先去掉再试试,另外,时间格式和计算机设置有关,是不是时间格式不对,我以前碰到这情况
#10
不会是时间格式的问题 你去看我的另一个帖子吧 那一个代码少很多 是测试用的
http://topic.csdn.net/u/20120225/12/ac3de8f1-bdbd-4015-a8bc-ea209f7bd845.html