那我插入新数据时,怎么判断数据库中已有了相同数据,从而不允许插入?
13 个解决方案
#1
先 Select 看有没有记录
rst.open "select * from table where field1='a' and ..."
if not rst.eof then
msgbox "有这条记录"
end if
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',...)
if (@@rowcount=0)
insert into table values('a',...)
#3
我用的是Data控件
查表中是否存在A,若不存在,在查表中是否有同一条记录中含有B和C,若有,提示
查表中是否存在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
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
帮忙看看吧
#7
UP
#8
不用data 控件,用ado 对象,还要注意你的数据库打开方式,就是,adopenstatic,adlock..换一换试试
#9
你的index都是product,当然不会seek到其他字段了。
#10
我是在改之前的人做的程序
所以数据库什么的都不改
只要最快实现那个功能
To XLYT(雨田) :那个product是怎么来的?我没看到关于它的定义,以为随便一个值就可以
所以数据库什么的都不改
只要最快实现那个功能
To XLYT(雨田) :那个product是怎么来的?我没看到关于它的定义,以为随便一个值就可以
#11
那就不要用什么index了,直接select多简单。
#12
原来的程序里是这么用的
我在改别人的程序
我在改别人的程序
#13
有没有谁能帮忙看看啊
着急着呢
着急着呢
#1
先 Select 看有没有记录
rst.open "select * from table where field1='a' and ..."
if not rst.eof then
msgbox "有这条记录"
end if
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',...)
if (@@rowcount=0)
insert into table values('a',...)
#3
我用的是Data控件
查表中是否存在A,若不存在,在查表中是否有同一条记录中含有B和C,若有,提示
查表中是否存在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
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
帮忙看看吧
#7
UP
#8
不用data 控件,用ado 对象,还要注意你的数据库打开方式,就是,adopenstatic,adlock..换一换试试
#9
你的index都是product,当然不会seek到其他字段了。
#10
我是在改之前的人做的程序
所以数据库什么的都不改
只要最快实现那个功能
To XLYT(雨田) :那个product是怎么来的?我没看到关于它的定义,以为随便一个值就可以
所以数据库什么的都不改
只要最快实现那个功能
To XLYT(雨田) :那个product是怎么来的?我没看到关于它的定义,以为随便一个值就可以
#11
那就不要用什么index了,直接select多简单。
#12
原来的程序里是这么用的
我在改别人的程序
我在改别人的程序
#13
有没有谁能帮忙看看啊
着急着呢
着急着呢