数据库更新时,判断输入的部门是否存在

guo114 2009-03-21 07:06:12
这段代码是实现向数据库中的“部门表”添加新的部门,其中Text1中输入的是部门名称,Text2中输入的是部门编号;当用户单击“确定”按钮以后
需要检查用户输入的“部门名称”是否已经存在,如果存在则给出提示,对于“部门编号”同样要检查并给出提示,但是我的这段代码却不能实现这个
功能。请哪位高手看看,帮助解决,万分感谢!!!
Private Sub Command1_Click()
Dim mrc As New ADODB.Recordset
Dim txtsql As String
Dim msgtext As String
Dim cn As New ADODB.Connection
cn.Open ConnectionString
If Trim(Text1.Text) = "" Then '判断是否输入了部门名称
MsgBox "部门名称不能为空!请重新输入!"
Text1.SetFocus
Else
txtsql = "select * from 部门表 where 部门名称= ' " & Text1.Text & " ' "
Set mrc = ExecuteSQL(txtsql, msgtext) '在部门表中查找部门
mrc.Open txtsql, cn, adOpenDynamic, adLockBatchOptimistic
If mrc.EOF = False Then '判断输入的部门是否已存在
MsgBox "该部门名称已存在,请重新输入!"
Text1.SetFocus
Text1.Text = ""
Else
If Trim(Text2.Text) = "" Then
MsgBox "请输入部门编号!"
Text2.SetFocus
Else
txtsql = "select * from 部门表 where 部门编号=' " & Text2.Text & " ' "
Set mrc = ExecuteSQL(txtsql, msgtext) '判断输入的部门编号是否已存在
mrc.Open txtsql, cn, adOpenDynamic, adLockBatchOptimistic
If mrc.EOF = False Then
MsgBox "该部门编号已存在!"
Text2.SetFocus
Text2.Text = ""
Else '若输入的部门名称和部门编号都正确,则插入
txtsql = "select * from 部门表"
Set mrc = ExecuteSQL(txtsql, msgtext)
mrc.Open txtsql, cn, adOpenDynamic, adLockBatchOptimistic
mrc.AddNew
mrc.Fields("部门名称").Value = Text1.Text
mrc.Fields("部门编号").Value = Text2.Text
mrc.Fields("部门经理").Value = " "
If MsgBox("您确定加入该部门?", vbYesNo, "提示") = vbYes Then
mrc.UpdateBatch
MsgBox "添加新部门成功!"
Unload Me
Else
Unload Me
frmMain.Show
End If
End If
End If
End If

End If
End Sub
...全文
75 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
guo114 2009-03-22
  • 打赏
  • 举报
回复
谢谢回复~~~~
饮水需思源 2009-03-21
  • 打赏
  • 举报
回复
1,if mrc.state <>adstateclosed then mrc.close
当记录集mrc为非关闭状态时先关闭,否则打开时会提示出错
2,if mrc.recordcount>0 then
如果打开的记录集mrc记录数大于零

guo114 2009-03-21
  • 打赏
  • 举报
回复
非常感谢您的解答,通过修改数据库和采用您的代码,问题已经解决了
但是我不太明白代码中 if mrc.state<>adstateclosed then mrc.close 和
if mrc.recordcount>0 then.........是什么意思,有什么作用。
guo114 2009-03-21
  • 打赏
  • 举报
回复
谢谢您的解答,但我不太明白您的话是什么意思,因为vb是我自学的,所以好多东西都不懂。
三断笛 2009-03-21
  • 打赏
  • 举报
回复
If mrc.EOF = False Then
我都是设置客户端游标后再判断Recordcount的
为什么不放在存储过程里解决?
饮水需思源 2009-03-21
  • 打赏
  • 举报
回复
txtsql=" select * from 部门表 where 部门名称='"& text1.text & "' or 部门编号='"& text2.text &"'"
if mrc.state<>adstateclosed then mrc.close
mrc.open txtsql,cn,adopenkeyset,adlockreadonly
if mrc.recordcount>0 then
msgbox "输入的部门名称或部门编号已经存在,请重新输入!",48,"提示"
mrc.close
exit sub
else
txtsql=" insert into 部门表(部门名称,部门编号) values('"& text1.text &"','"& text2.text &"')"
cn.execute txtsql
end if
mrc.close

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧