Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请问如何在access2007里面自定义菜单?

小pig  发表于:2009-12-15 17:19:32  
复制

 

access2007如何实现如图所示的自定义菜单呢?

试过用自定义 Ribbon 的方法,但没有成功

请教高手

 

Top
雪风 发表于:2009-12-15 17:38:02

ACCESS 2007下无法实现此功能。真的要用的话,可以在2003下定义后导入2007

 



雪风 发表于:2009-12-15 17:52:51

菜单的导入方法:

一、自定义菜单的存放位置:

所有自定义菜单都存放在系统表:MsysCmdbars 当中,类型为二进制

如果没有MsysCmdbars或表中没有记录, 说明没有自定义菜单

二、MsysCmdbars的结构

所有自定义菜单的资料都存放在[Grptbcd]二进制字段中,包括名称、图标、引用代码。。。

字段[TBNAME]仅作参考用

三、MsysCmdbars的导入和导出

不可以在打MsysCmdbars表的状态下,对数据进行删除或增加,系统会提示:本表不可删除,
数据为读。

但可以通过以下方法可对MsysCmdbars表中的数据进行修改或增加:

Dim obj As ADODB.Stream

导出数据:

Function OutMenu()
Dim rs As Recordset, I As Integer, ret
Set rs = CurrentDb.OpenRecordset("Select * from MsysCmdbars")
rs.MoveFirst
Dim obj As New ADODB.Stream
With obj
.Type = adTypeBinary
.Open
.Write rs.Fields(0)
.SaveToFile "N:\Ben.txt", adSaveCreateOverWrite
End With

Set obj = Nothing
Set rs = Nothing
End Function

导入菜单:
Function InMenu()
Dim rs As Recordset, I As Integer, ret
Set rs = CurrentDb.OpenRecordset("Select * from MsysCmdbars")
Dim obj As New ADODB.Stream
With obj
.Type = adTypeBinary
.Open
.LoadFromFile "N:\Ben.txt"
rs.AddNew
rs.Fields(0) = .Read
rs.Fields(1) = "SHIPMenu"
rs.Update
End With

Set obj = Nothing
Set rs = Nothing
End Function


用以上的方法就可以很容易保存自己精心设计的菜单为TXT 或其他文件, 使用时再导入就可以了



小pig 发表于:2009-12-15 22:15:24

有几点问题:

1.定义 Dim obj As ADODB.Stream,报错“未定义类型”,是否要添加什么库?

2.数据库中若没有自定义菜单,则没有MsysCmdbars,那么导出数据:Function OutMenu()肯定会报错。解决的办法是先导入菜单:Function InMenu(),但不知道导入的文件Ben.txt的格式啊?



小pig 发表于:2009-12-15 22:19:16

3.Dim rs As Recordset, I As Integer, ret,最后这个“ret”是返回指令吗?



小pig 发表于:2009-12-15 22:30:16
不好意思,第一条问题解决了,是要引用--->Microsoft   ActiveX   Data   Object   2.5  

总记录:5篇  页次:1/1 9 1 :