vb高手请进(10点之前在线等)

OptionExplicitPrivateSub进入_Click()DimtxtsqlAsStringDimmrcAsADODB.RecordsetDimmsgtextA... Option Explicit
Private Sub 进入_Click()
Dim txtsql As String
Dim mrc As ADODB.Recordset
Dim msgtext As String
If username.Text = "" Then
MsgBox "请输入用户名"
username.SetFocus
Else
txtsql = "select * from user_info where user_id='" & username.Text & " '"
Set mrc = executesql(txtsql, msgtext)
If mrc.EOF Then
MsgBox "没有这个用户"
username.SetFocus
Else
If Trim(mrc.Fields("user_pwd")) = Trim(username.Text) Then
username_ok = Trim(Text2.Text)
Unload Me
Form2.Show
Else
MsgBox "输入密码不对!请重输"
Text2.SetFocus
End If
End If
End If
End Sub

实时错误'91'
对象变量或with块变量为设置
If mrc.EOF Then
这一行为黄色字体
展开
 我来答
北京钢管中心
2009-06-21 · TA获得超过969个赞
知道小有建树答主
回答量:711
采纳率:0%
帮助的人:0
展开全部
对象变量或 With 块变量没有设置(错误 91)

创建对象变量有两个步骤。第一,必须先声明对象变量。然后必须用 Set 语句将一个正确的引用赋值给对象变量。同样地,With...End With 块必须先用 With 语句进入点来执行初始化。此错误有以下的原因和解决方法:

试图使用的对象变量,还没有用一个正确对象的引用来赋值。
给对象变量指定或再指定一个引用。例如,如果在下列的代码中省略 Set 语句的话,那么引用 MyObject 将会产生错误:

Dim MyObject As Object ' 创建对象变量。
Set MyObject = Sheets(1) ' 创建一个正确的对象引用。
MyCount = MyObject.Count ' 计数值赋给 MyCount。

试图用的对象变量已经被设为 Nothing。
Set MyObject = Nothing ' 释放此对象。
MyCount = MyObject.Count ' 引用了已释放的对象。

再指定引用给对象变量。例如,使用新的 Set 语句给对象设置新的引用。

此对象是正确的对象,但没有被设置,因为在对象库中,在 “引用” 对话框中没有被选取。
在 “添加引用” 对话框选择对象库。

在 With 块内GoTo 语句的去向。
不要跳进 With 块。确保块使用 With 语句进入点以执行初始化。

当选了 “设置下一条语句” 命令时,在 With 块内指定了一行。
With 块必须用 With 语句执行初始化。

==========================================

你的错误应该是:你定义了一个数据库链接(或者链接对象,或者控件)但是没有对这个链接初始化(如set conn=createobject("adodb.connection"))或者赋值,导致该对象为空,所以当你使用这个对象的时候就会出问题。

一个窗口是无法直接使用另一个窗口上的ado控件的,需要引用的时候必须带上窗体名字,比如在form2中使用form1里的data1控件,就必须使用:

form1.Data1.<属性、方法>

这样的格式才是正确的,如果form1中的data1没有初始化或者这个窗口没有打开,则报错

参考资料: http://bjgangguan.com/shengchanguige.html

xun530
2009-06-21 · TA获得超过206个赞
知道答主
回答量:179
采纳率:0%
帮助的人:150万
展开全部
你可以试试:(在你原来的基础上改的)

Option Explicit
Private Sub 进入_Click()
Dim txtsql As String
Dim mrc As ADODB.Recordset
Dim msgtext As String
If username.Text = "" Then
MsgBox "请输入用户名"
username.SetFocus
Else
txtsql = "select * from user_info where user_id='" & username.Text & " 'and '" & user_pwd & "'"
Set mrc = executesql(txtsql, msgtext)
If mrc.EOF=true Then
MsgBox "用户名或密码有误,请重新输入!", vbOKOnly + vbExclamation, "提示"
else
user_id = mrc.Fields("user_id")
Form2.Show
Unload Me
End If
End If
End Sub

看看~!

恩~!CdPzh说的没错
Dim mrc As ADODB.Recordset改为
Dim mrc As New ADODB.Recordset试试.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
four_tiger
2009-06-21 · TA获得超过466个赞
知道小有建树答主
回答量:602
采纳率:0%
帮助的人:350万
展开全部
1。username_ok没有定义,你前边用了Option Explicit
2。一般
Unload Me
Form2.Show
这两句话顺序要换下
3.也有可能是过程提前结束,但条件语句没有结束,不防在此增加个判断变量。
不知道有否帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CdPzh
2009-06-21 · TA获得超过3064个赞
知道小有建树答主
回答量:641
采纳率:0%
帮助的人:811万
展开全部
Dim mrc As ADODB.Recordset有问题,改为
Dim mrc As New ADODB.Recordset试试.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
home20010252
2009-06-21 · TA获得超过3321个赞
知道大有可为答主
回答量:1147
采纳率:0%
帮助的人:1293万
展开全部
问题出在哪一行,只看代码很难的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式