FUnctionUpdateUnitslnStoCk(strlAsString,Str2AsStnng) Dim dbs As Database Dim rstStr As Recordset Dim blnError As Boolean Dim intCount As Integer Dim intLockCount As Integer Dim intChoiCe As Integer Dim intRndCount As Integer Dim i As Integer OnErrorGoToErrorHandler '以共享模式打开数据库 Set dbs=openDatabase(“d:/dbtest/dbtest.mdb”) '打开表进行编辑 Set rstStr=dbs.OpenRecordset(”tb”,dbOpenDynaset) With rstStr .LockEditS=True '把锁定类型设置为保守方式 .FindFirst”电话=” & Chr(34) & strl & Chr(34) If.NoMatch Then UpdateUnitslnStock=-l GoTo CleanExit End lf '试图编辑记录。如果发生锁定错误,则错误处理程序会试着解决它,因为该程序使用的是保守式锁定,所以当试图编辑一个记录时会产生错误。如果它使用开放式锁定,那么就会在更新记录时产生错误 .Edit ![电话]=str2 .Update End With CleanExit: rstStr.Close dbs.CloSe EXit Function ErrorHandler: Select Case Err Case 3197 '记录集中的数据在被打开之后发生了变更,再试一下编辑该记录,这将自动刷新记录集,以显示最新的数据 Resume Case 3260 '记录被锁定 IntLockCount=IntLockCount + 1 '已经两次试图获得锁定,让用户取消或重试 If intLockCount > 2 Then intChoice=MsgBox(Err.Description & "Retry?",vbYesNo + VbQuestion) If intChoice=vbYes Then intLockCount=1 ElSe UpdateUnitslnStock=ERR_RECORDLOCKED Resume CleanExit End lf End lf '移交给Windows DOEVents '延迟一个较短的随机时间,每次锁定失败后就把这个时间间隔变长一些 intRndCount=intLockCount ^ 2 * Int(Rnd * 3000 + 1000) For i=1 To intBndCount: Next i Resume '再试一次编辑 Case Else '非预期的错误 MsgBOX"Error" & Err & ":" & Error, VbOKOnlv UpdateUnitslnStock=FAILED ResunleCleanExit End Select End FunCtlon
Private Sub Command1_Click() a=UpdateUnitslnStock(”3456.8765”,”2222.3333”) b=UpdateUnitslnStock(”6845.7651”,”4444.5555”) c=UPdateUnitslnStock(”6842.2939“,”6666.7777”) End Sub