多用户可能同时更改SQL-2000数据库的问题~~~~~~~~~~~~紧急紧急,高分高分!!!!!
可能有多个用户同时打开1个界面,现在想要避免多个用户同1时刻按下SAVE按钮导致的错误,这个SAVE按钮的代码该如何改正啊?(就是其中的“限制”的计算)
我现在的代码如下:
Private Sub Combo62_Click()
Dim cB62 As String
'课程时间段选择
Combo2.Clear
cB62 = "select uclassA.课程时间段 from uCoursesInfo,uclassa " & _
"where uclassA.课程代号=uCoursesInfo.课程代号 " & _
"and uCoursesInfo.课程名称='" & Combo62.Text & "'" & " and uCoursesInfo.所属系别='" & LabSP.Caption & "'" & " and uCoursesInfo.课程类别='专业课'" & _
" and uClassA.限制>0"
aduClassA.Close
aduClassA.Open cB62
If aduClassA.RecordCount <> 0 Then
Do While Not aduClassA.EOF
Combo2.AddItem aduClassA.Fields("课程时间段") '向Combox中添加数据
aduClassA.MoveNext
Loop
Else
Combo2.AddItem ""
End If
end sub
SAVE按钮中的代码如下:
Dim yY62 As Integer
Dim Xsql62 As String
Dim rsClassA62 As ADODB.Recordset 'uClassA中教室限制的计算
Dim rsAClassA62 As ADODB.Recordset 'uClassA中教室限制的计算
Set rsClassA62 = New ADODB.Recordset
With rsClassA62
.CursorType = adOpenStatic
.CursorLocation = adUseClient
'.LockType = adLockReadOnly
.LockType = adLockOptimistic
.Open "select * from uClassA", conDB
End With
Set rsAClassA62 = New ADODB.Recordset
With rsAClassA62
.CursorType = adOpenStatic
.CursorLocation = adUseClient
'.LockType = adLockReadOnly
.LockType = adLockOptimistic
.Open "select * from uClassA", conDB
End With
Xsql62 = "select uClassA.限制 from uClassA,uCoursesInfo where uCoursesInfo.课程名称='" & Combo62.Text & "'" & _
" and uCoursesInfo.所属系别=" & "'" & LabSP.Caption & "'" & _
" and uClassA.课程代号=uCoursesInfo.课程代号"
rsAClassA62.Close
rsAClassA62.Open Xsql62
yY62 = rsAClassA62!限制 - 1
Dim DeC62 As String
DeC62 = "update uClassA set 限制=" & yY62 & " where uClassA.课程代号=" & SaveRscourse!课程代号
rsClassA62.Close
rsClassA62.Open DeC62
Set rsClassA62 = Nothing
Set rsAClassA62 = Nothing
问题点数:100、回复次数:7Top
1 楼canyqf()回复于 2003-09-01 22:57:58 得分 0
“限制”字段最好用用户标识吧,你这样不知道那个用户在操作。Top
2 楼HZCNC(流浪的草鞋)回复于 2003-09-01 23:11:50 得分 0
临界资源:
数据库设计的重点~
建议找些系统的看一下~Top
3 楼sonymanzzzzzz(小凯)回复于 2003-09-01 23:50:31 得分 0
具体应该怎么做啊?能提供代码么?--我现在真的是手足无措了,各位大侠多谢啦!!!!!Top
4 楼Gelim(Gelim)回复于 2003-09-01 23:56:30 得分 0
加锁!Top
5 楼marious(胡子)回复于 2003-09-02 00:05:01 得分 0
ADO允许多用户同时使用同一数据,因此为了防止写入冲突,recordset对象的locktype属性控制这种情况,其中保守锁(adlockpessimistic),ADO全力保证编辑成功;开放锁(adlockoptimistic),ado不保证成功,当两个用户同时或接近同时改变同一数据,则第二个编辑失败。Top
6 楼wdwd05(学.NET,从头开始)回复于 2003-09-02 09:46:38 得分 0
提供给你一个,简单明了的办法 ~
用事务去做~
就可以解决你的问题~~`Top
7 楼ElsaSun(睡着了的猫猫)回复于 2003-09-07 22:13:17 得分 100
加锁呀adlockpessimisticTop



