Private Sub CmdOK_Click()Dim dbs As Database
Dim userDB As Database
Dim userRD As Recordset
Dim dbName As String
Dim strSQL As StringOn Error GoTo errEnddbName = App.Path
If Right(dbName, 1) <> "\" Then dbName = dbName + "\"
dbName = dbName + "DataBase\book.mdb"
strSQL = "select 状态 from 图书信息 where 图书编号=""" & TxtNo.Text & """ AND 状态=""借出"""Set userDB = DBEngine.Workspaces(0).OpenDatabase(dbName, False, True)Set userRD = userDB.OpenRecordset(strSQL, dbOpenSnapshot)If userRD.Fields("状态") = "借出" Then
    MsgBox "此书已借出!", vbOKOnly + vbExclamation, "借阅图书"
Else
    userRD.Close
    Set userRD = Nothing
    Set dbs = OpenDatabase("database\book.mdb")
    dbs.Execute " INSERT INTO 借书记录(图书编号,图书名称,作者,出版社,类型) " _
        & "select 图书编号,图书名称,作者,出版社,类型 from 图书信息 where 图书编号=""" & TxtNo.Text & """"
    dbs.Execute " UPDATE 借书记录 SET 读者名称=""" & userName & """,借阅时间=date(),反还时间=""未还"""
    dbs.Execute " UPDATE 图书信息 SET 图书编号=""" & TxtNo.Text & """,状态=""借出"""
    MsgBox "借阅超作成功完成!", vbOKOnly + vbExclamation, "借阅图书"
End If
Exit SuberrEnd:
    MsgBox Err.Description, vbOKOnly + vbExclamation, "数据出错"End Sub--------------------------------------------------------------------
先从图书信息里查询书籍[状态]是否为“借出”,如果没有借出则把记录COPY到另一个表中.....
就是判断[状态]是否为“借出”那里有问题,请大虾指教

解决方案 »

  1.   

    Private Sub CmdOK_Click()
        Dim userDB As Database
        Dim userRD As Recordset
        Dim dbName As String
        Dim strSQL As String
        Dim UserName As String
        
        On Error GoTo errEnd
        dbName = App.path
        If Right(dbName, 1) <> "\" Then dbName = dbName + "\"
        dbName = dbName + "DataBase\book.mdb"
        strSQL = "select 状态 from 图书信息 where 图书编号='" & Trim(TxtNo.Text) & "'"
        
        Set userDB = DBEngine.Workspaces(0).OpenDatabase(dbName, False, True)
        
        Set userRD = userDB.OpenRecordset(strSQL, dbOpenSnapshot)
        
        If userRD.Fields("状态") = "借出" Then
            MsgBox "此书已借出!", vbOKOnly + vbExclamation, "借阅图书"
            userRD.Close
            Set userRD = Nothing
        Else
            userRD.Close
            Set userRD = Nothing
            userDB.Execute " INSERT INTO 借书记录(图书编号,图书名称,作者,出版社,类型) " _
                & "select 图书编号,图书名称,作者,出版社,类型 from 图书信息 where 图书编号='" & Trim(TxtNo.Text) & "'"
            userDB.Execute " UPDATE 借书记录 SET 读者名称='" & UserName & "',借阅时间='" & Date & "',反还时间='未还'"
            userDB.Execute " UPDATE 图书信息 SET 状态='借出' Where 图书编号='" & Trim(TxtNo.Text) & "'"
            userDB.Close
            Set userDB = Nothing
            MsgBox "借阅超作成功完成!", vbOKOnly + vbExclamation, "借阅图书"
        End If
        Exit Sub
        
    errEnd:
            MsgBox Err.Description, vbOKOnly + vbExclamation, "数据出错"End Sub
      

  2.   

    userDB.Execute " INSERT INTO 借书记录(图书编号,图书名称,作者,出版社,类型) " _
                & "select 图书编号,图书名称,作者,出版社,类型 from 图书信息 where 图书编号='" & Trim(TxtNo.Text) & "'"
            userDB.Execute " UPDATE 借书记录 SET 读者名称='" & UserName & "',借阅时间='" & Date & "',反还时间='未还'"改成:
            userDB.Execute " INSERT INTO 借书记录(图书编号,图书名称,作者,出版社,类型,读者名称,借阅时间,返还时间) " _
                & "select 图书编号,图书名称,作者,出版社,类型,'" & UserName & "','" & Date & "','未还'" _
                & "from 图书信息 where 图书编号='" & Trim(TxtNo.Text) & "'"
      

  3.   

    有点小问题,判断是对了,但是怎么借书记录表里没有记录?
    就是insert into语句好象没有起作用?
    借书记录表里除了借阅时间,其它都是文本字段
      

  4.   

    你COMMIT了吗.设置断点,找一下为什么没有插入记录.
      

  5.   

    楼上的,那个怎么设置?
    如果我不加判断,直接用
    dbs.Execute " INSERT INTO 借书记录(图书编号,图书名称,作者,出版社,类型) " _
            & "select 图书编号,图书名称,作者,出版社,类型 from 图书信息 where 图书编号=""" & TxtNo.Text & """"
        dbs.Execute " UPDATE 借书记录 SET 读者名称=""" & userName & """,借阅时间=date(),反还时间=""未还"""
        dbs.Execute " UPDATE 图书信息 SET 图书编号=""" & TxtNo.Text & """,状态=""借出"""是可以添加记录的
      

  6.   

    小马哥,不加判断直接用你的
    userDB.Execute " INSERT INTO 借书记录(图书编号,图书名称,作者,出版社,类型,读者名称,借阅时间,返还时间) " _
                & "select 图书编号,图书名称,作者,出版社,类型,'" & UserName & "','" & Date & "','未还'" _
                & "from 图书信息 where 图书编号='" & Trim(TxtNo.Text) & "'"
    加不上记录,为什么啊?