我用VB做了一个登录界面,但是一运行总说“对象变量或WITH变量未设置”,我并没有用到这个变量。请帮我检查以下代码有错吗?另外我想当管理员登录时所有内容都可以修改,普通用户进入时只可以操作某几个菜单,请问怎么实现?代码放在主窗体还是登录窗体?
Dim a As Integer '记录输入密码的次数
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOK_click()
UserName = ""
Dim txtsql, msgtext As String
Dim cnn As ADODB.Connection
Dim RS As ADODB.Recordset
Set cnn = New ADODB.Connection
mysql = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source= c:\图书管理系统\libary.mdb"
cnn.Open mysql
txtsql = "select * from yh "
Set RS = ExecuteSQL(txtsql, msgtext)
If RS.EOF = False Then
MsgBox "没有这个用户,请从新输入!", vbExclamation
txtusername.SetFocus
Else
If Trim(RS.Fields(1)) = Trim(txtpassword.Text) Then
RS.Close
Me.Hide
UserName = Trim(txtusername.Text)
txtusername.AddItem RS.Fields(1)
End If
End If
a = a + 1
If a = 3 Then
Unload Me
End If
End Sub
Dim a As Integer '记录输入密码的次数
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOK_click()
UserName = ""
Dim txtsql, msgtext As String
Dim cnn As ADODB.Connection
Dim RS As ADODB.Recordset
Set cnn = New ADODB.Connection
mysql = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source= c:\图书管理系统\libary.mdb"
cnn.Open mysql
txtsql = "select * from yh "
Set RS = ExecuteSQL(txtsql, msgtext)
If RS.EOF = False Then
MsgBox "没有这个用户,请从新输入!", vbExclamation
txtusername.SetFocus
Else
If Trim(RS.Fields(1)) = Trim(txtpassword.Text) Then
RS.Close
Me.Hide
UserName = Trim(txtusername.Text)
txtusername.AddItem RS.Fields(1)
End If
End If
a = a + 1
If a = 3 Then
Unload Me
End If
End Sub
解决方案 »
- 谁用过 _Application::SetAutomationSecurity 这个函数啊。
- 解析xml类型的字符串
- 数据库编程中资源如何释放?(急!急!急!)
- 关于控件在网页显示及其功能的问题...急呀...
- ODBC中如何保存SQL SERVER的密碼
- 急寻:VBA代码保护
- DLL 要求传入Byte指针,VB中如何获取变量地址阿?
- 请教各位,VB里将存放在数据库中图形或者文件等信息读取出来后如何转变成相应文件或者图形文件
- 怎样得到所点击的 TreeView 的 node 的 key??
- 这里的专家分能当人民币用吗???
- 请问从哪里下载 Microsoft Data Engine 呀!
- 如何调出拨号连结界面
set RS = NEW ADODB.recordset
把代码还是放到主窗体的LOAD事件中吧!
ExecuteSQL(txtsql, msgtext) 里面可能是错误的~
'Dim cnn As ADODB.Connection 定义数据连接
Dim rst As ADODB.Recordset '定义数据集
Dim sTokens() As String '定义一个存放SQL语句段落的数组
On Error GoTo ExecuteSQL_Error '错误处理
sTokens = Split(SQL) '把SQL语句以“ ”隔开语句分别存到数组中
Set cnn = New ADODB.Connection
cnn.Open ConnectString
'判断SQL语句的第一个单词(语句)是否为INSERT,DELETE,UPDATE
If InStr("INSERT,DELETE,UPDATE", UCase(sTokens(0))) Then
cnn.Execute SQL
MsgString = UCase(sTokens(0)) & " 执行成功"
Else
Set rst = New ADODB.Recordset
rst.Open Trim(SQL), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & " 条记录 "
End If
ExecuteSQL_Exit: '执行后退出
Set rst = Nothing
Set cnn = Nothing
rst.Close
cnn.Close
Exit Function
ExecuteSQL_Error: '错误处理
MsgString = "查询错误: " & Err.Description
GoTo ExecuteSQL_Exit
End Function以上是改动后的结果,因为你的数据库是一直打开的,所以 Dim cnn As ADODB.Connection '定义数据连接 可以不要~直接写在SUB MAIN 里面就可以了~