我在向数据库写数据的时候,用了两个文本框,将这两个文本框显示的数据写入access数据库,这两个文本框其中一个是编号,编号是手动输入的,我想在手动输入编号的之后,没点击cmd写入数据库按钮之前,由界面来查询数据库中是否已经有这个编号了,如果有这个编号,那么警告该编号已经存在,如果没有,就没有反应。也就是说,发生警告是在编号文本框中输入编号之后。请高手指点一下,小弟多谢。
access数据库中也是只有两列,一列是编号,一列是数据。多谢大家帮助。
access数据库中也是只有两列,一列是编号,一列是数据。多谢大家帮助。
Private Sub add_cmd_Click()
Dim cn As ADODB.Connection
Dim rs As Recordset
Dim n As Long
Set cn = New ADODB.Connection
cn.Open "PROVIDER=MICROSOFT.Jet.OLEDB.4.0;Data Source=D:\Version\VB_code\UDP-2\DataBase\Switch_Data.mdb;"
sql = "select * from 上传数据 where 编号 ='" & Trim(Text3.Text) & "'"
MsgBox "该编号已经存在!请使用其他编号!", vbOKOnly + vbExclamation, "警告"
sql = "insert into 上传数据(编号,数据) values ('" & Trim(Text3.Text) & "','" & Trim(Text1.Text) & "')"
cn.Execute sql, n
MsgBox "记录添加成功!", vbOKOnly + vbInformation, "提示"
Text1.Text = ""
Text3.Text = ""
cn.Close Set cn = Nothing
End Sub
我想添加一条if语句来判断,可是不知道该怎么添加,不清楚条件是什么。
请高手指教。
Dim cn As ADODB.Connection
Dim rs As Recordset
Dim n As Long
Set cn = New ADODB.Connection
cn.Open "PROVIDER=MICROSOFT.Jet.OLEDB.4.0;Data Source=D:\Version\VB_code\UDP-2\DataBase\Switch_Data.mdb;"
sql = "select * from 上传数据 where 编号 ='" & Trim(Text3.Text) & "'"
set rs=new adodb.recordset
if rs.state<>adstateclosed then rs.close
rs.open sql,cn,adopenkeyset,adlockreadonly
if rs.recordcount>0 then
MsgBox "该编号已经存在!请使用其他编号!", vbOKOnly + vbExclamation, "警告"
rs.close
exit sub
else
sql = "insert into 上传数据(编号,数据) values ('" & Trim(Text3.Text) & "','" & Trim(Text1.Text) & "')"
cn.Execute sql, n
MsgBox "记录添加成功!", vbOKOnly + vbInformation, "提示"
Text1.Text = ""
Text3.Text = ""
end ifrs.close
cn.Close Set cn = Nothing
End Sub
Dim cn As adodb.Connection
Dim rs As Recordset
Dim n As Long
Set cn = New adodb.Connection
cn.Open "PROVIDER=MICROSOFT.Jet.OLEDB.4.0;Data Source=D:\Version\VB_code\UDP-2\DataBase\Switch_Data.mdb;"
sql = "select * from 上传数据 where 编号 ='" & Trim(Text3.Text) & "'"
Set rs = New adodb.Recordset
If rs.State <> adStateClosed Then rs.Close
rs.Open sql, cn, adOpenKeyset, adLockReadOnly
If rs.RecordCount > 0 Then
MsgBox "该编号已经存在!请使用其他编号!", vbOKOnly + vbExclamation, "警告"
rs.Close
Exit Sub
Else sql = "insert into 上传数据(编号,数据) values ('" & Trim(Text3.Text) & "','" & Trim(Text1.Text) & "')"
cn.Execute sql, n
MsgBox "记录添加成功!", vbOKOnly + vbInformation, "提示"
Text1.Text = ""
Text3.Text = ""
End If
rs.Close
cn.Close Set cn = Nothing
Set rs = Nothing
End Sub我把代码这样改了,但是在网页中运行的时候还是提示错误:
运行时错误'-2147217913(80040e07)'
标准表达式数据类型不匹配。请高手指教。
运行时错误'-2147217913(80040e07)'
标准表达式数据类型不匹配。
为什么呢?
rs.Open sql, cn, adOpenKeyset, adLockReadOnly
这两句是什么意思呢
呵呵 ,我是新手 ,还请指教。
分全给你,呵呵
这说明你有个SQL语句写错了。你加上on error goto跟一下,看是错在哪一句了。
第一句,满足一定条件关记录集;第二句打开记录集。你不用管这两句,应该和你的BUG没关系。
我该怎么办呢??
sql = "insert into 上传数据(编号,数据) values ('" & Trim(Text3.Text) & "','" & Trim(Text1.Text) & "')"
cn.Execute sql, n
MsgBox "记录添加成功!", vbOKOnly + vbInformation, "提示"
Text1.Text = ""
Text3.Text = ""是没错的
我开始的时候调试就是只用的这句,但是加上判断是否有重复编号的语句之后就出错了
。。
On Error GoTo ErrHandle
Dim cn As adodb.Connection
Dim rs As Recordset
Dim n As Long
Set cn = New adodb.Connection
cn.Open "PROVIDER=MICROSOFT.Jet.OLEDB.4.0;Data Source=D:\Version\VB_code\UDP-2\DataBase\Switch_Data.mdb;"
sql = "select * from 上传数据 where 编号 ='" & Trim(Text3.Text) & "'"
Set rs = New adodb.Recordset
If rs.State <> adStateClosed Then rs.Close
rs.Open sql, cn, adOpenKeyset, adLockReadOnly
If rs.RecordCount > 0 Then
MsgBox "该编号已经存在!请使用其他编号!", vbOKOnly + vbExclamation, "警告"
rs.Close
Exit Sub
Else
sql = "insert into 上传数据(编号,数据) values ('" & Trim(Text3.Text) & "','" & Trim(Text1.Text) & "')"
cn.Execute sql, n
MsgBox "记录添加成功!", vbOKOnly + vbInformation, "提示"
Text1.Text = ""
Text3.Text = ""
End If
rs.Close
cn.Close
Set cn = Nothing
Set rs = Nothing
Exit SubErrHandle:
Stop
Debug.Print Err.Description
Resume '看出错在哪行
End Sub
sql=" select * 上传数据 where 编号="& text3.text &""sql = "insert into 上传数据(编号,数据) values (" & Text3.Text & ",'" & Trim(Text1.Text) & "')"