请帮我检查一下代码,谢谢!

wangyanqiu0918 2003-08-21 05:37:56
我用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


...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingming81 2003-08-22
  • 打赏
  • 举报
回复
没有引用ADO,或没有SET RS =NEW ADODB.RECORDSET
dengyiwolf 2003-08-22
  • 打赏
  • 举报
回复
SET RS =NEW ADODB.RECORDSET
把代码还是放到主窗体的LOAD事件中吧!

xayzmb 2003-08-22
  • 打赏
  • 举报
回复

set RS = NEW ADODB.recordset
wdwd05 2003-08-22
  • 打赏
  • 举报
回复
楼主,你也真好意思的~~ 0分~~~你要吝啬死啊~ 最讨厌这样的了~
wdwd05 2003-08-22
  • 打赏
  • 举报
回复
ExecuteSQL(txtsql, msgtext)里面的函数应该是这样的

Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset '定义一个数据集执行函数
'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 里面就可以了~
wdwd05 2003-08-22
  • 打赏
  • 举报
回复
不是因为SET RS =NEW ADODB.RECORDSET 的原因~

应该是没有引用ADO的原因吧?

不知道,你这个例子是直接拿过来用的,还是你自己做的,如果自己做的话,你肯定引用ADO了,但如果是拿别人的例子用的话,我想应该是没有应用ADO才对

或者Set RS = ExecuteSQL(txtsql, msgtext)里面的
ExecuteSQL(txtsql, msgtext) 里面可能是错误的~

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧