别人(人以及离职)写的类我这里调试保错,老板在催,半夜都没法睡,急急急!!
我一直不懂这个程序为什么用这个复杂的结构,Implements ObjectControl是类里面还要用类吗?没看懂,而且Set oDb = oObjectContext.CreateInstance("ADODB.Connection") ’调用时保错“对象变量或with块变量没设置”?????????????
类源代码为:
Private oObjectContext As ObjectContext
Private oDb As ADODB.Connection
Private oRs As ADODB.Recordset
Private vSql As Variant
Const vDBConn As Variant = "DSN=crm;UID=sa;PWD=;"
Implements ObjectControl
Private Function ObjectControl_CanBePooled() As Boolean
ObjectControl_CanBePooled = True
End Function
Private Sub ObjectControl_Deactivate()
Set oObjectContext = Nothing
End Sub
Private Sub ObjectControl_Activate()
Set oObjectContext = GetObjectContext()
End Sub
Public Function checkpassword(ByVal username As Variant, ByVal password As Variant) As Variant
'On Error GoTo checkpasswordError
Dim vAccount As New Collection
Dim vresponse As New Collection
Set oDb = oObjectContext.CreateInstance("ADODB.Connection") ’调用时保错“对象变量或with块变量没设置”?????????????
Set oRs = oObjectContext.CreateInstance("adodb.recordset")
Let vSql = "SELECT * FROM employee WHERE employeeid = '" & Trim(username) & "';"
oDb.Open vDBConn
Set oRs = oDb.Execute(vSql)
If Not oRs.EOF Then
If Trim(oRs.Fields("Password")) = Trim(password) Then
vAccount.Add Trim(oRs.Fields("employeeid")), "login"
vAccount.Add Trim(oRs.Fields("popedom")), "popedom"
vAccount.Add Trim(oRs.Fields("name")), "name"
vAccount.Add Trim(oRs.Fields("datapopedom")), "datapopedom"
vAccount.Add Trim(oRs.Fields("depart")), "depart"
oObjectContext.SetComplete
oDb.Close
vresponse.Add vAccount, Key:="account"
vresponse.Add False, Key:="error"
Set checkpassword = vresponse ' error handling
Exit Function
Else
vresponse.Add True, Key:="error"
vresponse.Add "密码错!", Key:="reason"
Set checkpassword = vresponse
oDb.Close
oObjectContext.SetComplete
Exit Function
End If
Else
vresponse.Add True, Key:="error"
vresponse.Add "没找到用户名!", Key:="reason"
Set checkpassword = vresponse
oDb.Close
oObjectContext.SetComplete
Exit Function
End If
checkpasswordError:
oObjectContext.SetAbort
vresponse.Add True, Key:="error"
vresponse.Add Err.Description, Key:="reason"
Set checkpassword = vresponse
End Function