数据库是SQL 2000,报错说对象关闭时,不允许操作会急死人的!!
Public fMainForm As frmMain
Public fLogin As frmloginPublic Function ExecuteSQL(SQLstr As String) As ADODB.Recordset
Dim cn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim msg As String
On Error GoTo executesql_error
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa,Initial Catalog=数据准备区;Data Source=AKEN"
Set rst = New ADODB.Recordset
rst.Open Trim$(SQLstr), cn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
executesql_exit:
Set rst = Nothing
Set cn = Nothing
Exit Function
executesql_error:
msg = "错误原因:" & Err.Description
Resume executesql_exit
End Function
Private Sub cmdOk_Click()
Dim cn As ADODB.Connection
Dim SQLstr As String
Dim rs As New ADODB.Recordset
If txtUsername.Text = "" Or txtPassword.Text = "" Then
MsgBox "必须输入操作员编号和口令!!!", vbOKOnly + vbExclamation, "注意"
txtUsername.SetFocus
Else
SQLstr = "select * from USER where operatorNo='" & Trim(txtUsername.Text) & "'"
Set rs = ExecuteSQL(SQLstr)
If rs.EOF = True Then
MsgBox "操作员编码输入错误!!!", vbOKOnly + vbExclamation, "注意"
txtUsername.Text = ""
txtPassword.Text = ""
txtUsername.SetFocus
Else
If Trim(rs.Fields(1)) = Trim(txtPassword.Text) Then
Load fMainForm
fMainForm.Show
Unload fLogin
rs.Close
Set rs = Nothing
Else
MsgBox "密码输入错误!!!", vbOKOnly + vbExclamation, "注意"
txtPassword.Text = ""
txtPassword.SetFocus
End If
End If
End If
End Sub
Public fMainForm As frmMain
Public fLogin As frmloginPublic Function ExecuteSQL(SQLstr As String) As ADODB.Recordset
Dim cn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim msg As String
On Error GoTo executesql_error
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa,Initial Catalog=数据准备区;Data Source=AKEN"
Set rst = New ADODB.Recordset
rst.Open Trim$(SQLstr), cn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
executesql_exit:
Set rst = Nothing
Set cn = Nothing
Exit Function
executesql_error:
msg = "错误原因:" & Err.Description
Resume executesql_exit
End Function
Private Sub cmdOk_Click()
Dim cn As ADODB.Connection
Dim SQLstr As String
Dim rs As New ADODB.Recordset
If txtUsername.Text = "" Or txtPassword.Text = "" Then
MsgBox "必须输入操作员编号和口令!!!", vbOKOnly + vbExclamation, "注意"
txtUsername.SetFocus
Else
SQLstr = "select * from USER where operatorNo='" & Trim(txtUsername.Text) & "'"
Set rs = ExecuteSQL(SQLstr)
If rs.EOF = True Then
MsgBox "操作员编码输入错误!!!", vbOKOnly + vbExclamation, "注意"
txtUsername.Text = ""
txtPassword.Text = ""
txtUsername.SetFocus
Else
If Trim(rs.Fields(1)) = Trim(txtPassword.Text) Then
Load fMainForm
fMainForm.Show
Unload fLogin
rs.Close
Set rs = Nothing
Else
MsgBox "密码输入错误!!!", vbOKOnly + vbExclamation, "注意"
txtPassword.Text = ""
txtPassword.SetFocus
End If
End If
End If
End Sub
解决方案 »
- Regsvr32成功的DLL不能用CreateObject创建类的对象怎么办?
- VB调用dll声明格式该怎么写?
- 小问题?//
- 一个郁闷了很久的问题
- XP风格combobox控件怎么不行呢?高手来改一下! VB ActiveX
- 有边位高手会联网(送分)
- 如何解决引用的2个过程执行先后的问题
- if (0 == (::GetWindowLong(hWnd, GWL_STYLE) & WS_VISIBLE))
- pic.Picture = Rs!photo 为什么提示类型不对!高手请指教!谢谢!
- 巴顿老兄,请问如何在VB中使用GIF动画?我要的是源码,不是控件!我在网上找到的就不能使用!!
- 请大家帮我分析一下下面的这段小程序究竟为什么出问题!!!
- 如何找到程序的运行路径
Set rs = ExecuteSQL(SQLstr)
改成:
SQLstr = "select * from USER where operatorNo='" & Trim(txtUsername.Text) & "'"
if rs.state=adstateopen then rs.close
rs.open sqlstr,cn,adopenkeyset,adlockreadonly
试试
看你的cmdOk_Click()事件中没有打开CN
Dim cn As ADODB.Connection
Dim SQLstr As String
Dim cnstr As String
Dim rs As ADODB.Recordset
If txtUsername.Text = "" Or txtPassword.Text = "" Then
MsgBox "必须输入操作员编号和口令!!!", vbOKOnly + vbExclamation, "注意"
txtUsername.SetFocus
Else
SQLstr = "select * from USER where operatorNo='" & Trim(txtUsername.Text) & "'"
cnstr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据准备区;Data Source=AKEN"
Set cn = New ADODB.Connection
cn.Open cnstr
Set rs = New ADODB.Recordset
rs.Open SQLstr, cn, adOpenKeyset, adLockOptimistic
If rs.EOF = True Then
MsgBox "操作员编码输入错误!!!", vbOKOnly + vbExclamation, "注意"
txtUsername.Text = ""
txtPassword.Text = ""
txtUsername.SetFocus
Else
If Trim(rs.Fields(1)) = Trim(txtPassword.Text) Then
Load fMainForm
fMainForm.Show
Unload fLogin
rs.Close
Set rs = Nothing
Else
MsgBox "密码输入错误!!!", vbOKOnly + vbExclamation, "注意"
txtPassword.Text = ""
txtPassword.SetFocus
End If
End If
End If
End Sub