vb数据库如何限制不能输入同一编号?

来源:百度知道 编辑:UC知道 时间:2024/06/02 07:43:07
求救:vb数据库如何限制不能输入同一编号?
Private Sub cmdUpdate_Click()
On Error GoTo UpdateErr
a = MsgBox("你确认添加或修改当前记录吗?", 256 + 4 + 32, "请确认")
If a = 6 Then

'-----------------------------------------------
datPrimaryRS.Recordset.MoveFirst

datPrimaryRS.Recordset.Find ("bianhao='" & txtFields(21).Text & "'")
If datPrimaryRS.Recordset.EOF = False Then
MsgBox "编号已经存在,操作取消", 48, "注意"
Exit Sub
End If
'----------------------------------------------
datPrimaryRS.Recordset.UpdateBatch adAffectAll
MsgBox "数据更新成功", 64, "成功"

Exit Sub
Else
Exit Sub
End If
UpdateErr:
MsgBox Err.Description
End Sub

可是不管数据库有无此编号都这样提示:
编号已经存在,操作取消
但实际还是写进数据库了。

在数据库里把编号设置为索引或唯一。添加相同数据时数据库会报错。根据数据库的错误80040E2F access是 80040E21 if hex(err.number)=80040e2f then msgbox "您输入的编号重复,请重新输入" exit subendif

对于数据库表记录唯一性编号的问题,简单的解决方法有:1、在表中增加一个“自增”的主键字段,如果你使用的是ACCESS,那直接在字段属性里选择“自动增加”(好像是这个词吧)就可以了;如果是SQL SERVER,那在字段属性里将“标识”设置为TRUE,就可以了。使用这种方法的好处就是编号为系统自动产生,你不用担心它的唯一性问题;但缺点也很明显,如果你要使用DTS等数据传输功能时,自增字段的存在会让你的数据库逻辑连接产生错乱或根本没办法导入。2、你也可以使用“日期时间”做为你的逻辑编号,因为日期时间都是唯一的,比如:insert into t (nID,nName,...) values (GetDate(),'xxx'...)这样做的好处就是方便以后使用DTS或SSIS等功能时,方便数据的导入导出

把If datPrimaryRS.Recordset.EOF = False Then 改成 If datPrimaryRS.Recordset.RecordCount >0 Then 试试看

我是这样解决的
如果这是一个自编号的字段,比如交易的流水号,就让程序自动生成不要让用户输入,如果是个输入的编号,在进行UPDATE操作前先遍历数据库该字段,确定有没有重复,没重复再冲入数据,这样就是浪费点资源,但现在的机器资源那么多浪费点也无所谓的