我在向数据库写数据的时候,用了两个文本框,将这两个文本框显示的数据写入access数据库,这两个文本框其中一个是编号,编号是手动输入的,我想在手动输入编号的之后,没点击cmd写入数据库按钮之前,由界面来查询数据库中是否已经有这个编号了,如果有这个编号,那么警告该编号已经存在,如果没有,就没有反应。也就是说,发生警告是在编号文本框中输入编号之后。请高手指点一下,小弟多谢。
access数据库中也是只有两列,一列是编号,一列是数据。多谢大家帮助。

解决方案 »

  1.   

    这是我的代码:
    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语句来判断,可是不知道该怎么添加,不清楚条件是什么。
    请高手指教。
      

  2.   

    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) & "'" 
        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 
      

  3.   

    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) & "'"
         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)'
    标准表达式数据类型不匹配。请高手指教。
      

  4.   

    只要点击add_cmd,就会报这个错:
    运行时错误'-2147217913(80040e07)'
    标准表达式数据类型不匹配。 
    为什么呢?
      

  5.   

     If rs.State <> adStateClosed Then rs.Close
            rs.Open sql, cn, adOpenKeyset, adLockReadOnly
    这两句是什么意思呢
    呵呵 ,我是新手 ,还请指教。
    分全给你,呵呵
      

  6.   


    这说明你有个SQL语句写错了。你加上on error goto跟一下,看是错在哪一句了。
      

  7.   


    第一句,满足一定条件关记录集;第二句打开记录集。你不用管这两句,应该和你的BUG没关系。
      

  8.   

    on error goto 这个我不太会用啊
    我该怎么办呢??
      

  9.   

    后面这一部分
     sql = "insert into 上传数据(编号,数据) values ('" & Trim(Text3.Text) & "','" & Trim(Text1.Text) & "')"
        cn.Execute sql, n
        MsgBox "记录添加成功!", vbOKOnly + vbInformation, "提示"
        Text1.Text = ""
        Text3.Text = ""是没错的
    我开始的时候调试就是只用的这句,但是加上判断是否有重复编号的语句之后就出错了
    。。
      

  10.   

    Private Sub add_cmd_Click()
    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
      

  11.   

    stop之后 按F8单步跟,并打开立即窗口看debug的内容
      

  12.   

    如果“编号”是数值型:
    sql=" select * 上传数据 where 编号="& text3.text &""sql = "insert into 上传数据(编号,数据) values (" & Text3.Text & ",'" & Trim(Text1.Text) & "')" 
      

  13.   

    sql="SELECT * FROM 上传数据 WHERE [编号]=" & trim(text3.text)
      

  14.   

    上面作废,用这个:sql="SELECT * FROM 上传数据 WHERE [编号]=" & CLng(trim(text3.text))