你的字段class_No 为数字类型吧,错误在sql语句。
sql = "select * from class_Info where class_No = " & val(txtClassno.Text)
试一试!

解决方案 »

  1.   

    试过了,没用呀,
    stc.Open sql, conn, adOpenDynamic, adLockBatchOptimistic
    是指在这行错误了,
      

  2.   

    查一查你的class_no是什么类型的?
    如果是数字型的,就用楼上的试试。
      

  3.   

    sql = "select * from class_Info where class_No = '" & Trim(txtClassno.Text) & "'"
        Set rstc = New ADODB.Recordset
        'rstc.CursorLocation = adUseClient//这一句修改一下试试,具体见下面
        rstc.Open sql, conn, adOpenDynamic, adLockBatchOptimistic
        If rstc.EOF = False Then
            MsgBox "班号重复,请重新输入!", vbOKOnly + vbExclamation, "警告"
            rstc.Close
            txtClassno.SetFocus
        Else
            rstc.Close
            rst.AddNew
            rst.Fields(0) = Trim(txtClassno.Text)
            rst.Fields(1) = Trim(comboGrade.Text)
            rst.Fields(2) = Trim(txtDirector.Text)
            rst.Fields(3) = Trim(txtClassroom.Text)
            rst.Update
            MsgBox "修改班级信息成功!", vbOKOnly + vbExclamation, "警告"
           rst.Book = myBook如果你定义的Connection对象变量为:cn
    那么在打开连接后,用cn.CursorLocation = adUseClient你再试试看
      

  4.   

    问题的原因就在与数字类型与字串类型产生冲突。
    而你本身的sql字符串的附值并没有错。
      

  5.   

    问题是找到了,我把Class_no改成文本类型的就可以了,但我要是用数字类型的那该怎么办呢?还望各位高手们指点.
      

  6.   

    当然是用 dragon525() 说的方法了,不过你要先检查文本是否为数字
    if isNumeric(txtClassno.Text) then
        sql = "select * from class_Info where class_No = " & val (txtClassno.Text)
    else
        ...
    end if
      

  7.   

    搞定了但我还有一点不理解
    if isNumeric(txtClassno.Text) then
        sql = "select * from class_Info where class_No = '" & trim(val(txtclassno.text))&"'"
    else
        ...
    end if
    我写成这样子怎么不行
      

  8.   

    你知道trim的意思吗?
    trim是去掉字符串两边的空格的函数。现在你知道出错的原因了吧!
      

  9.   

    而且你这样写,更你以前的几乎没什么区别。trim(val(txtclassno.text))
    这个trim更是毫无意义!
      

  10.   

    应该写成val(trim(txtclassno.text))