Office中国论坛/Access中国论坛

标题: Access 2007 手动加载功能区(答LeeTien ) [打印本页]

作者: zhuyiwen    时间: 2010-3-15 12:15
标题: Access 2007 手动加载功能区(答LeeTien )
LeeTien 写了这样一函数来加载功能区:

Public Function LoadRibbons()
    'Load ribbons into the database
    On Error GoTo Error1
    Dim db As DAO.Database
    Set db = Application.CurrentDb
    Dim rs As DAO.Recordset
    Set rs = db.OpenRecordset("tblRibbon")
    ' tblRibbon has to be replaced by your table name.
    Do Until rs.EOF
        Application.LoadCustomUI _
        rs("RibbonName").Value, rs("RibbonXML").Value

        rs.MoveNext
    Loop

Error1_Exit:
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    Exit Function
Error1:
    Select Case Err
        Case 32609
        ' Ribbon already loaded
    Case Else
        MsgBox "Error: " & Err.Number & vbCrLf & _
               Err.Description, vbCritical, _
               "Error", Err.HelpFile, Err.HelpContext
    End Select
    Resume Error1_Exit
End Function

可是:
他把它放在启动窗体的加载事件里:
  1. Sub Form_Load()
  2.    Call CreateRibbon
  3. End Sub
复制代码
来加载,当打开启动窗体时,并没有出错提示,但也看不到自定义功能区!

这是什么原因呢?


原因在于
Access 2007在显示功能区之前首先要加载功能区。

比如窗体的功能区,我们必须在加载窗体之前加载功能区的XML,然后,指定这个窗体的功能区属性为这个功能区的名称,那么,打开这个窗体的时候,就会显示这个功能区,关闭这个窗体,那么这个功能区也会随之关闭,但是,功能区并没有从内存去除,因此,当第二再打开这个窗体的时候,不需要再加载这个功能区就能显示功能区,反之,则程序出错。

而对于全局的功能区,它又是如何显示的呢?

只要是用的USysRibbons这个表存储的功能区,Access2007会自动加载并显示功能区。往往这不是我们所需要的,因为我们需要根据登录用户来显示不同的功能区,所以我们想手动控制。

那么,Access2007何时显示手动加载的功能区呢?我们知道,窗体显示功能区只要指定其功能区属性就可以显示与之相关的功能区。

同样,Access2007的全局功能区需要在Access的选项中的当前数据库选项卡中指定全局功能区的名称。

那么何时加载这个全局功能区呢?

事实上,Access有两种自动运行的机制:启动窗体和Autoexec自动宏,它们在数据库打开时都会自动运行。但两者的区别在于,Autoexec宏在Access初始化之前运行,启动窗体在Access初始化之后运行。全局功能区的显示则是在Access初始化之后,在启动窗体运行之前。因此,我们必须在Autoexec自动宏中加载功能区,才能显示全局功能区。

所以我们设计一个自动宏Autoexec如下

参数
RunCodeLoadRibbons

这样,我们在数据库启动的时候就会首先运行自动宏来加载功能区,在数据库初始化之后,就能显示这个功能区了。
作者: johnliu1974    时间: 2010-3-18 09:49
也在研究这个问题
作者: xuwenning    时间: 2010-3-18 14:30
学习
学习
作者: sxb2007    时间: 2010-3-19 14:56
学习
学习
作者: c101    时间: 2010-3-19 15:18
謝謝
學習學習
作者: 轻风    时间: 2010-5-18 08:05
学习之
作者: guzhonghua26    时间: 2010-5-21 12:50
看看,研究。
作者: 82077802    时间: 2010-6-3 05:51
学习
学习
作者: littlexing84    时间: 2010-11-25 16:43
sdfgsdfgs
作者: shitijie001    时间: 2010-12-8 09:33
广州购物    李老太家住大东区尚品天成小区,退休前曾当过教师的她,平常喜爱读书看报,不久前还对电脑产生了兴趣。一个多月前,远在江苏的小姑子来沈串门,闲唠家常中,李老太得知“南京桂花鸭”非常好吃。可是,沈阳距南京那么远,咋去买呢?
  “眼下时兴网购,您可以在网上购买呀!”在侄女的帮助下,李老太轻点鼠标完成了网购。她所购买的是:五件套“南京桂花鸭”,价格是118/盒。
  意外打击:
  拆开包装鸭子臭啦
  40天后,邮差送来了鸭子。当她打开层层精美的外包装后却傻眼了:五件套中的鸭翅、鸭腿等真空包装袋还算正常,而透过那只盛装着“桂花鸭”的真空塑料袋看,里面的鸭子已发黑发腐,隔着塑料袋都能闻到刺鼻的臭味。“难道是过了保质期?”李老太戴上老花镜,仔细观察后发现,还差20天才到保质期呢。
  李老太决心维权。她首先查到了“南京桂花鸭集团有限公司”的电话。接线员听完李老太的讲述后,留下一句:“我们需对此事进一步调查,您等候消息吧!”此后很长时间,李老太没得到任何消息。
  无奈感慨:
  异地执法目前挺难
  李老太不服输,先后跑到沈阳市工商局、沈阳市消费者协会投诉。然而,工作人员无奈地表示,没办法异地执法。
  她又找到本报记者投诉。当日,淘宝网相关负责人接受采访时称,如果消费者能提交证据,网站会依照消费者保障计划进行赔付及惩处。可是,如何确定是食物本身问题,还是运输中变质?该负责人并无明确回答。当地饮食
  昨日,李老太反馈称,“南京桂花鸭”厂家来电称:可以再邮寄两只鸭子作为赔偿。对此,李老太感到既气愤又无奈。她感叹:“网上维权还是太难啦!”(转载)
实体街从上述转载来的事件看来,网购确实存在很多的问题。因此,很多东西不是说网购就是最好的选择。我相信,他们当地应该有商家代理这个牌子的商品。只是他们不知道而已。只要在当地城市购买,既可以面对面检查。就算出了问题,维权也很方便。起码对方在同一城市。
其实网购的维权目前还不完善。很多法规法制还没有完善落实。这都会给消费者带来很多的不便。有些东西还是当面验货为好。网上的还是有些虚无缥缈。真假分辨都要花费很长时间。让人担心,不放心。实现中不能说百分百是没有错失的,但也比网购更让人放心。维权方面也更完善一些。证据和处理归属也明确。因此现在很多人都喜欢网购本地化。他们找当地城市里最好的。他们在实体街上得到更多的实惠。请大家多关注一下身边的商家和商品吧。其实身边的才是最好的。

源自:www.shitijie.com

相关文章:
“网购先上我们身边的街”更实惠
教你选择合适你的文胸
红酒与红酒文化
商铺
跳着性感的钢管舞

作者: miracle-y    时间: 2011-1-6 22:57
学习了
作者: yanzqun    时间: 2011-2-11 13:26
看看
作者: 月午生云    时间: 2011-3-22 11:04
顶一下!
作者: vankeoa    时间: 2011-5-7 17:36
学习

作者: LeeTien    时间: 2012-5-3 11:11
自定义Ribbon 功能区的目的就是为了权限控制或者定制用户工作菜单
用户还没登陆你菜单就加载完成了
始终没有达到预想的效果
功能区的加载要放在登陆完成后执行
肯定是放在窗体加载后
作者: zhuyiwen    时间: 2012-5-4 08:27
LeeTien 发表于 2012-5-3 11:11
自定义Ribbon 功能区的目的就是为了权限控制或者定制用户工作菜单
用户还没登陆你菜单就加载完成了
始终没 ...

不对!

自定义功能区的加载函数应该放在 Autoexec 宏中,这样可以最先执行。
作者: LeeTien    时间: 2012-5-10 11:46
zhuyiwen 发表于 2012-5-4 08:27
不对!

自定义功能区的加载函数应该放在 Autoexec 宏中,这样可以最先执行。

没登陆就执行了
有什么用
每个用户的菜单都一样
作者: zhuyiwen    时间: 2012-5-10 13:39
LeeTien 发表于 2012-5-10 11:46
没登陆就执行了
有什么用
每个用户的菜单都一样

搞你的不懂了
作者: LeeTien    时间: 2012-5-11 15:29
zhuyiwen 发表于 2012-5-10 13:39
搞你的不懂了

现在都是多用户系统
每个用户的菜单都不同
每个用户的权限也不同
你没有登录怎么区分用户菜单
怎么区分用户权限?
作者: zhuyiwen    时间: 2012-5-11 16:49
LeeTien 发表于 2012-5-11 15:29
现在都是多用户系统
每个用户的菜单都不同
每个用户的权限也不同

我当然做到了,就是本文所说的的那样做的。
不知道到你那就怎么不成了,呵呵 ......
作者: LeeTien    时间: 2012-5-26 12:15
zhuyiwen 发表于 2012-5-11 16:49
我当然做到了,就是本文所说的的那样做的。
不知道到你那就怎么不成了,呵呵 ......

问你个问题:你的Ribbon菜单是在用户登录之前还是在用户登录之后加载?
作者: zzf9008    时间: 2012-5-26 12:31
要学习
作者: sql999    时间: 2013-4-4 22:31
不错




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3