大体要实现的功能如下:要打开存书表进行操作,如果Access数据库存书表中的“是否借出”项为True的话,就进行借出操作,否则的话,提示本书以借出,部分代码如下:
'对存书表进行操作并存储相应的记录项
    rst.Open "select * from 存书 where 书号='" + Text2.Text + "'", cnn, adOpenDynamic, adLockOptimistic
    
    If rst.EOF = True Then
       MsgBox "输入的书号不存在!", vbOKOnly, "错误"
       Text1.Text = ""
       Text2.Text = ""
       Text1.SetFocus
    Else
       If rst.Fields(5) = "No" Then
         '将当前记录的“书号字段”和“书名”字段赋值给变量
         booknum = rst.Fields(0)
         bookname = rst.Fields(1)
         '判断是否书借出
         rst.Fields(5) = "Yes"
       Else
         MsgBox "此书已借出!", vbOKOnly, "警告!"
       End If
    End If
   rst.Close
为什么总在rst.close处提示错误,但是如果不对“是否借出”域进行操作,这个模块就不会出问题,请问各位大虾,这是怎么回事?是不是和access数据库的设置有关?因为我的“是否借出”域开始设的是“是/否”型,但是后来我改成文本后,还是出现相同的问题,很郁闷。

解决方案 »

  1.   

    改变字段的值后,应该调用Update
      

  2.   

    booknum = rst.Fields(0)
     bookname = rst.Fields(1)
     '判断是否书借出
     rst.Fields(5) = "Yes"
     rst.update
      

  3.   

    楼主你没有更新,你将新的值给了field(5),你要更新后才有用的。    rst.CursorLocation=adUseClient'使用客户端游标
        rst.Open "select * from 存书 where 书号='" & trim(Text2.Text) & "'", cnn, adOpenDynamic, adLockOptimistic
        
        If rst.EOF Then
           MsgBox "输入的书号不存在!", vbOKOnly, "错误"
           Text1.Text = ""
           Text2.Text = ""
           Text1.SetFocus
        Else
           If rst.Fields(5) = "No" Then
             '将当前记录的“书号字段”和“书名”字段赋值给变量
             booknum = rst.Fields(0)
             bookname = rst.Fields(1)
             '判断是否书借出
             rst.Fields(5) = "Yes"
             rst.update'
           Else
             MsgBox "此书已借出!", vbOKOnly, "警告!"
           End If
        End If
       rst.Close