
vb中出现“对象变量或with块变量未设置”
PrivateSubForm_Activate()'设置操作员权限WithData1.RecordsetIf.BOF=FalseThen.MoveFirst.FindFi...
Private Sub Form_Activate() '设置操作员权限
With Data1.Recordset
If .BOF = False Then .MoveFirst
.FindFirst "操作员 like" + Chr(34) + StatusBar1.Panels(3).Text + Chr(34) + ""
If .NoMatch Then
Else
'根据权限表qxsz中的各个字段的值设置菜单是否可用
main.zjyj.Enabled = .Fields("追加押金")
main.ZSDJ.Enabled = .Fields("住宿登记")
main.tf.Enabled = .Field("退宿登记")
main.tfdj.Enabled = .Fields("调房登记")
main.kfsz.Enabled = .Fields("客房管理")
main.kfcx.Enabled = .Fields("客房查询")
main.ftck.Enabled = .Fields("房态查看")
main.gzcx.Enabled = .Fields("挂账查询")
main.khjk.Enabled = .Fields("客户结款")
main.zscx.Enabled = .Fields("住宿查询")
main.tfcx.Enabled = .Fields("退宿查询")
main.sftx.Enabled = .Fields("宿费提醒")
main.ysbb.Enabled = .Fields("登记预收报表")
main.xsbb.Enabled = .Fields("客房销售报表")
main.xstj.Enabled = .Fields("客房销售统计报表")
main.czysz.Enabled = .Fields("操作员设置")
main.ma.Enabled = .Fields("密码设置")
main.csh.Enabled = .Fields("初始化")
main.qxsz.Enabled = .Fields("权限设置")
End If
End With
End Sub
恳请高手解答!
点调试以后光标停在If .BOF = False Then处 展开
With Data1.Recordset
If .BOF = False Then .MoveFirst
.FindFirst "操作员 like" + Chr(34) + StatusBar1.Panels(3).Text + Chr(34) + ""
If .NoMatch Then
Else
'根据权限表qxsz中的各个字段的值设置菜单是否可用
main.zjyj.Enabled = .Fields("追加押金")
main.ZSDJ.Enabled = .Fields("住宿登记")
main.tf.Enabled = .Field("退宿登记")
main.tfdj.Enabled = .Fields("调房登记")
main.kfsz.Enabled = .Fields("客房管理")
main.kfcx.Enabled = .Fields("客房查询")
main.ftck.Enabled = .Fields("房态查看")
main.gzcx.Enabled = .Fields("挂账查询")
main.khjk.Enabled = .Fields("客户结款")
main.zscx.Enabled = .Fields("住宿查询")
main.tfcx.Enabled = .Fields("退宿查询")
main.sftx.Enabled = .Fields("宿费提醒")
main.ysbb.Enabled = .Fields("登记预收报表")
main.xsbb.Enabled = .Fields("客房销售报表")
main.xstj.Enabled = .Fields("客房销售统计报表")
main.czysz.Enabled = .Fields("操作员设置")
main.ma.Enabled = .Fields("密码设置")
main.csh.Enabled = .Fields("初始化")
main.qxsz.Enabled = .Fields("权限设置")
End If
End With
End Sub
恳请高手解答!
点调试以后光标停在If .BOF = False Then处 展开
5个回答
展开全部
请检查data1.recordset是否不存在,是否未打开,是否未执行查询。
——————————————————————————————
你好,我发现原因了,你的form_active事件里没有对data1.datasource赋值,就直接使用了recordset,这样的话,recordset里是不会有值的,我加入了Data1.RecordSource = "select * from 操作员 like" + Chr(34) + StatusBar1.Panels(3).Text + Chr(34) + ""和Data1.Refresh两句话,就可以了,但是我不了解你所要查询的表名,因此在取field时又抛出了错误,这个select查询就需要你去完成了,而且我不建议在form_active事件里写这些,因为form_active事件是在每次这个窗体处于活动时都会触发,这样的 话,查询就会进行多次,会影响效率,我建议将此代码移至form_load里,但如果你有“不关闭主窗体就更换操作员进行登录“的话,可以在此窗体里加入一个公开方法,将代码写入方法中,在form_load时进行调用,当更换操作员时,也调用一下这个方法,这样的话,就可以达到你“不同操作员的权限不同”的需求了。
——————————————————————————————
你好,我发现原因了,你的form_active事件里没有对data1.datasource赋值,就直接使用了recordset,这样的话,recordset里是不会有值的,我加入了Data1.RecordSource = "select * from 操作员 like" + Chr(34) + StatusBar1.Panels(3).Text + Chr(34) + ""和Data1.Refresh两句话,就可以了,但是我不了解你所要查询的表名,因此在取field时又抛出了错误,这个select查询就需要你去完成了,而且我不建议在form_active事件里写这些,因为form_active事件是在每次这个窗体处于活动时都会触发,这样的 话,查询就会进行多次,会影响效率,我建议将此代码移至form_load里,但如果你有“不关闭主窗体就更换操作员进行登录“的话,可以在此窗体里加入一个公开方法,将代码写入方法中,在form_load时进行调用,当更换操作员时,也调用一下这个方法,这样的话,就可以达到你“不同操作员的权限不同”的需求了。
展开全部
在使用
mrc
前加一句
Set
mrc
=
New
ADODB.Recordset
如还有问题,请检查打开数据库是否成功
mrc
前加一句
Set
mrc
=
New
ADODB.Recordset
如还有问题,请检查打开数据库是否成功
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是变量没有定义啊,或者有的变量没有设置新的实例(New) ,仔细检查一下
with 什么?
找一下哪个对象在你的程序里有没有,比如with adodc1.recordset
你就要找一下有没有adodc1
with 什么?
找一下哪个对象在你的程序里有没有,比如with adodc1.recordset
你就要找一下有没有adodc1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
with 好像没你这种用法吧,还是写完整吧。
If Data1.Recordset.BOF then
。。。
。。
end if
If Data1.Recordset.BOF then
。。。
。。
end if
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义过rs吗?如果定义过是否引用了adodb
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询