我用VB和MSSQL编写了一个图书出租软件,在归还步骤中出现了一个运行速度明显变慢的问题,经过调试,是由于在最后的那段“添加记录”的程序造成的。具体代码如下:
Private Sub action()  '图书出租函数
Dim bookcode As Long
txtSQL = "SELECT * From rlbackBuffer"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF Then
MsgBox "预还表没有记录,不能归还!", vbQuestion + vbNo, "警告"
Else
        Do While Not mrc.EOF
        bookcode = mrc.Fields(3)
        txtSQL = "SELECT * From rlbook where (bookId = '" & bookcode & "') " '=======修改图书基本表rlbook
        Set mrc2 = ExecuteSQL(txtSQL, MsgText)
        mrc2.Fields(7) = "1"
        mrc2.Update
        txtSQL = "SELECT * From rlrent where (bookId ='" & bookcode & "') and RentState='借' " '=======修改出租信息表rlrent
        Set mrc2 = ExecuteSQL(txtSQL, MsgText)
        mrc2.Fields(14) = "还"
        mrc2.Fields(11) = Date
       mrc2.Fields(12) = Time
        mrc2.Fields(13) = username
        mrc2.Update
        mrc.MoveNext
        Loop
'rlRentHistory插入记录=========================
txtSQL = "INSERT  INTO rlRentHistory (MemberId,MemberName,BookId,BookTitle,BookType,direction,actiondate,actiontime)  SELECT MemberId,MemberName,BookId,BookTitle,BookType,RentState,backDate,backTime  FROM  rlbackBuffer"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'清除临时表rlbackBuffer==============
txtSQL = "delete From rlbackBuffer"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'扣除会员帐户余额、、、、、、、、、、、、、、、、速度变慢的所在/////////
txtSQL = "SELECT * From rlPreFeeAccount  "
Set mrc = ExecuteSQL(txtSQL, MsgText)
 mrc.AddNew               
               mrc.Fields(1) = Trim(memberid.Text)
               mrc.Fields(2) = Label5.Caption          
               mrc.Fields(3) = -Label11.Caption             
              mrc.Fields(4) = "直接扣租金"
              mrc.Fields(5) = Date
                mrc.Fields(6) = Time()
               mrc.Update
               mrc.Close
                
clearup
showdata2
showtop
Label15.Caption = "0"
Label24.Caption = "0"
Label11.Caption = "0"
Label21.Caption = "0"
dick.Caption = ""
bookid.Text = ""
memberid.Text = ""
End If
End Sub
100分求助各位高手,!!!1

解决方案 »

  1.   

    你的程序看起来太乱,一般情况不需要存储过程。
    insert的速度比较快
      

  2.   

    是不是将你的程序尽量函数化??insert比较快
      

  3.   

    用insert或者将txtSQL = "SELECT * From rlPreFeeAccount  "
    Set mrc = ExecuteSQL(txtSQL, MsgText)
     mrc.AddNew
    换成
    txtSQL = "SELECT TOP 1 * From rlPreFeeAccount  "
    Set mrc = ExecuteSQL(txtSQL, MsgText)
     mrc.AddNew
      

  4.   

    用INSERT 怎么样实现添加记录呢?
    请指教
      

  5.   

    用INSERT 怎么样实现添加记录呢?
    请指教
    //
    写个SQL语句执行就是了
    insert into 表名(字段1....,字段N)values(参数,参数....)
    然后执行一下,看来楼主对SQL很不熟悉哦