在数据库中,两条记录的 A 项和 B项 是不能完全相同的 那我插入新数据时,怎么判断数据库中已有了相同数据,从而不允许插入?

解决方案 »

  1.   

    先 Select 看有没有记录
    rst.open "select * from table where field1='a' and ..."
    if not rst.eof then
    msgbox "有这条记录"
    end if
      

  2.   

    select * from table where field='a' and ...
    if (@@rowcount=0)
    insert into table values('a',...)
      

  3.   

    我用的是Data控件
    查表中是否存在A,若不存在,在查表中是否有同一条记录中含有B和C,若有,提示
      

  4.   

    设置该列为主键,直接Insert时如果有重复,就会报错。
      

  5.   

    机车号  设备号   厂家
     1      123     高科规定,机车号唯一,且设备号和厂家同时唯一
    例如,数据库中已存在上面的数据,如果再插入数据机车号为1,则提示已存在该数据,是否需要覆盖。
    如果插入 2 123 高科 则提示修改设备号和厂家但如果插入 3  123   天象,则是允许的,或者 4 885 高科 也是正确的现在我不知道怎么判 要插入的设备号和厂家是不是同时存在与一条记录
    用的data控件
    先用的seek,又用的nomatch ,判是不是有相同的机车号
    但我发现 无论seek多少次,好象nomatch的值不变
    请大家帮忙看看,还有什么办法,谢谢
    下面是我的代码
    mainForm.Data1.Recordset.Index = "product"
                    mainForm.Data1.Recordset.Seek "=", Trim(trainTxt.Text)
                    If mainForm.Data1.Recordset.NoMatch = True Then '没有相同的机车号
                        mainForm.Data1.Recordset.Index = "product"
                        mainForm.Data1.Recordset.Seek "=", Trim(productTxt.Text)
                        If mainForm.Data1.Recordset.NoMatch = True Then '没有相同的设备ID
                            
                        Else '有相同的设备ID
                             mainForm.Data1.Recordset.Index = "product"
                             mainForm.Data1.Recordset.Seek "=", Trim(ComboFtry.Text)
                             If mainForm.Data1.Recordset.NoMatch = True Then '没有相同的厂家
                             
                             Else '有相同的厂家
                                MsgBox "数据库中已有相同记录,请修改厂家号或设备ID", 64, "提示"
                                Exit Sub
                             End If
                        End If
                        Data1.Recordset.AddNew
                        Data1.Recordset.Fields(0) = Trim(trainTxt.Text)
                        Data1.Recordset.Fields(1) = Trim(AddZeroSatisfy(productTxt.Text))
                        Data1.Recordset.Fields(2) = Trim(ComboFtry.Text)
                        Data1.Recordset.Fields(3) = Trim(ComboFrqz.Text)
                        Data1.Recordset.Update
      

  6.   

    不用data 控件,用ado 对象,还要注意你的数据库打开方式,就是,adopenstatic,adlock..换一换试试
      

  7.   

    你的index都是product,当然不会seek到其他字段了。
      

  8.   

    我是在改之前的人做的程序
    所以数据库什么的都不改
    只要最快实现那个功能To XLYT(雨田) :那个product是怎么来的?我没看到关于它的定义,以为随便一个值就可以
      

  9.   

    那就不要用什么index了,直接select多简单。