我用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
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
解决方案 »
- 关于DLL的问题,求高手指教!
- 请问怎么做时隐时现的界面?
- 解决就结贴给分,分不够的话另加贴给,即便将所有分都给掉
- COM+应用程序安装向导,最后提示角色无权限,怎么办?
- 这种效果不知道能不能做出来???????
- VB中的WINSOCK在哪里?我打开VB找了半天没找到这个控件,真衰
- Adodc控件中有connectionstring属性如何设置?
- 急求:vb制作浏览器进度条原码!
- 如何比对两个文本文件
- 哪位大侠知道数据库*.DBF文件的文件头结构?
- cuizm(射天狼) 或者其他仁兄进来帮忙看看吧,多谢,急死了!
- 请问在vb里面有没有方法产生固定的延时,精度可以达到毫秒,并且可以在另外一个定时器控件事件里使用的?
insert的速度比较快
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.AddNew
换成
txtSQL = "SELECT TOP 1 * From rlPreFeeAccount "
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.AddNew
请指教
请指教
//
写个SQL语句执行就是了
insert into 表名(字段1....,字段N)values(参数,参数....)
然后执行一下,看来楼主对SQL很不熟悉哦