+ -
当前位置:首页 → 问答吧 → 请教access两个相同字段数据时,提示不能重复录入

请教access两个相同字段数据时,提示不能重复录入

时间:2011-12-08

来源:互联网

在access中建立一个表
字段1(user) 字段2 (Time) 字段3(data)
s1 2011-10-8 6:00 88 //A
s2 2011-5-6 90 //B
s1 2011-10-8 6:00 //C


这样C行字段1和A行的相同,而且字段2的数据也是相同的,这样C行就不能写入,
在c++里面应该怎么写那 ?请指教。。。谢谢



 

作者: slshelly   发布时间: 2011-12-08

直接在ACCESS中设置表的 (user,Time) 为复合主键。

作者: ACMAIN_CHM   发布时间: 2011-12-08

最简单的方法就是设置复合主键,OR 在插入前用代码判断

作者: wwwwb   发布时间: 2011-12-08

设置主键后,有重复的会弹出异常,该怎么办?
USER_ID 是字段1,也是主键,如果m_UserID写入时,前面已经存在这个值,执行到m_pRecordset->PutCollect ("USER_ID",(_bstr_t)pAddUserDlg.m_UserID);这一句时,直接进入了catch(...)。但是我不想进入catch,而是想在在m_pRecordset->PutCollect 之前判断一下有无重复,没有再写入,有重复就不写入了,该怎么做那?谢谢!

ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
_bstr_t sql;
sql = "select* from userinfo order by USER_ID desc";

//sql.Format("select* from employees");
_RecordsetPtr m_pRecordset;
m_pRecordset = m_AdoConn.GetRecordSet(sql);

try
{


m_pRecordset->AddNew ();
m_pRecordset->PutCollect ("USER_ID",(_bstr_t)pAddUserDlg.m_UserID);
m_pRecordset->PutCollect ("USER_NAME",(_bstr_t)pAddUserDlg.m_UserName );
m_pRecordset->PutCollect ("MEMO",(_bstr_t)pAddUserDlg.m_Remark);
m_pRecordset->Update ();
m_AdoConn.ExitConnect ();

}
catch(...)
{
MessageBox("操作失败");
return;
}

作者: slshelly   发布时间: 2011-12-08

select count(*) as ss from tt where user=@user and time=@time
if ss>0 then 
重复
end if

作者: wwwwb   发布时间: 2011-12-08

引用设置主键后,有重复的会弹出异常,该怎么办?
这不是你自己代码中的处理吗? 你自己MessageBox("操作失败");的啊!

作者: ACMAIN_CHM   发布时间: 2011-12-08

引用 5 楼 acmain_chm 的回复:

引用设置主键后,有重复的会弹出异常,该怎么办?这不是你自己代码中的处理吗? 你自己MessageBox("操作失败");的啊!


呵呵,我的意思是怎么在这之前判断一下。

作者: slshelly   发布时间: 2011-12-08

sql = "select* from userinfo where id=xxxxx and Time=xxxxxx order by USER_ID desc";

然后判断是否有记录返回,

作者: ACMAIN_CHM   发布时间: 2011-12-08

弱弱的问一下,代码是不是这样写的:(偶刚开始数据库,连SQL语句还没看懂,呜呜。。。)

sql = “select count(*) as ss from userinfo where id=xxxxx and Time=xxxxxx order by USER_ID desc”
m_pConnection->Execute(sql ,NULL,adCmdText);
if(ss>0 )
{
  //重复
}
else
{
  //添加
}

作者: slshelly   发布时间: 2011-12-08

楼主需要了解一下C中是如何操作数据库的。

作者: ACMAIN_CHM   发布时间: 2011-12-08