运行时出现了“对象关闭时不允许操作”实时错误3704,请问大家怎么改呢?
<P>Option Explicit‘这是公共模块</P><P>Public adocon As ADODB.Connection<BR>Public adminp As Boolean<BR>Public readp As Boolean<BR>Public username As String</P>
<P>Public Function executesql(ByVal sql As String) As ADODB.Recordset<BR>Dim rst As ADODB.Recordset<BR>Set adocon = New ADODB.Connection<BR>adocon.CursorLocation = adUseClient<BR>adocon.ConnectionString = Connstring<BR>adocon.Open<BR>Dim stokens() As String<BR>On Error GoTo executesql_error<BR>stokens = Split(sql, " ")<BR>If InStr("inser,delete,update", UCase(stokens(0))) Then<BR> adocon.Execute sql<BR> Else<BR> Set rst = New ADODB.Recordset<BR> rst.Open Trim(sql), adocon, adOpenKeyset, adLockOptimistic<BR> Set executesql = rst<BR> End If<BR>executesql_exit:<BR> Set rst = Nothing<BR> Set adocon = Nothing<BR> Exit Function<BR>executesql_error:<BR> Resume executesql_exit<BR> <BR>End Function</P>
<P>Public Function Connstring() As String</P>
<P>Connstring = "provider = microsoft.Jet.OLEDB.4.0;Data source =" & App.Path & "\123.mdb "<BR>End Function<BR>Public Function executeqx() As Boolean<BR>Dim sql As String<BR>Dim rst As ADODB.Recordset<BR>Set adocon = New ADODB.Connection<BR>adocon.ConnectionString = Connstring<BR>adocon.Open<BR> Set rst = New ADODB.Recordset<BR> sql = "select * from use where username='" & username & "'"<BR> rst.Open Trim(sql), adocon, adOpenKeyset, adLockOptimistic<BR> If rst.EOF = True Then<BR> MsgBox "非法用户", vbExclamation + vbOKOnly, "警告"<BR> executeqx = Null<BR> Exit Function<BR> End If<BR> If rst.Fields("admin") Then<BR> executeqx = True<BR> Exit Function<BR> ElseIf rst.Fields("readonly") Then<BR> executeqx = False<BR> End If<BR> rst.Close<BR> On Error GoTo executesql_error<BR>executesql_exit:<BR> Set rst = Nothing<BR> Set adocon = Nothing<BR> Exit Function<BR>executesql_error:<BR> Resume exectuesql_exit<BR> <BR>End Function</P>
<P><BR>’这是登录窗体代码<BR>Private Sub Command1_Click()<BR>Dim txtsql As String<BR>Dim mrc As New ADODB.Recordset<BR> txtsql = "select username from use where username=" & Trim(Text1.Text) & ""<BR> Set mrc = executesql(txtsql)<BR> If mrc.EOF = True Then<BR> MsgBox "用户名错误!", vbExclamation + vbOKOnly, "警告"<BR> Text1.SetFocus<BR> Text1.SelStart = 0<BR> Text1.SelLength = Len(Text1.Text)<BR> Exit Sub<BR> End If<BR> username = mrc.Fields(0)<BR> txtsql = "select username from use where password=" & Trim(Text2.Text) & ""<BR> Set mrc = executesql(txtsql)<BR> If mrc.EOF = True Then<BR> MsgBox "密码错误!", vbExclamation + vbOKOnly, "警告"<BR> Text2.SetFocus<BR> Text2.SelStart = 0<BR> Text2.SelLength = Len(Text1.Text)<BR> Exit Sub<BR> End If<BR> If executeqx Then<BR> adminp = True<BR> Else<BR> readp = True<BR> End If<BR> <BR>End Sub</P>
<P><BR>Private Sub Command2_Click()<BR>end<BR>End Sub<BR>运行时出现了“对象关闭时不允许操作”实时错误3704,请问大家怎么改呢?<BR></P> 這麼多代碼,也不標明運行到哪 一行出的這個錯。。。誰有時間去幫你看。。。<BR><BR>連接出了問題 Set mrc = executesql(txtsql)<br>我估计是这个错误.<br>这个在网上已经看过几千万次了.<br> <P>说明recordset没有打开,问题在打开表的那条语句中。<BR></P> 就我的这个程序,怎么改呢? <P>不标明那里出错,这么长的代码很难一一去看~</P> 我的也是这个问题啊位高手给指导一下呀
Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long
Public OK As Boolean
'记录确定次数
Dim miCount As Integer
Private Sub Form_Load()
Dim sBuffer As String
Dim lSize As Long
sBuffer = Space$(255)
lSize = Len(sBuffer)
Call GetUserName(sBuffer, lSize)
If lSize > 0 Then
txtUserName.Text = ""
Else
txtUserName.Text = vbNullString
End If
OK = False
miCount = 0
End Sub
Private Sub cmdCancel_Click()
OK = False
Me.Hide
End Sub
Private Sub cmdOK_Click()
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim MsgText As String
'ToDo: create test for correct password
'check for correct password
UserName = ""
If Trim(txtUserName.Text = "") Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
txtSQL = "select * from user_Info where user_ID = '" & txtUserName.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
[color=Red]If mrc.EOF = True Then[/color]
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUserName.Text)
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
End If
miCount = miCount + 1
If miCount = 3 Then
Me.Hide
End If
Exit Sub
End Sub 那是没有资料
页:
[1]
