随附的数据库zip文件是Access 2003格式的示例,其中包含一个自定义表单,该表单为创建,列出和处理查询和表提供了一站式前端。 该表单受两个自定义表,三个查询和一个公共模块的支持,应将其导入使用该表单的任何数据库中。
压缩数据库中的其他表和查询来自Northwind DB的早期版本。
开发自定义前端的原因我使用Access数据库作为报告工具,以从从许多不同系统脱机复制的表中提取数据。 开发数据库中有900多个表和1200个查询。
为了简化管理这些查询和表的创建和操作,我开发了一个自定义表单来列出查询/表名及其创建/修改日期。
查询/表可以在设计视图中打开,运行,重命名,复制或从表单本身删除。 为了帮助维护,可以将查询或表的字段及其类型导出到Word,并且可以将Access所提供的基础SQL的格式化版本导出到查询SQL。
另外,在屏幕底部的文本框中设置或查看查询或表的自定义Description属性。 此属性对于提供附加信息很有用,但是Access从来没有使它容易实现-除非您知道它存在,否则它往往会被忽略。
表单的屏幕截图如下所示。

要运行查询(或打开表),请双击查询/表的名称,或单击感叹号按钮。 要在设计视图中打开,请双击查询类型或单击条目右侧的设计视图按钮。
开发表单时,我使用的是Access2003。在Access 2007和2010中,现在代替数据库窗口显示的“开发人员”窗格最不适合显示数百个表或查询-我觉得这样做更可取通过自定义表单进行的大部分修改工作等。
什么支持表格有两个用于链接和记录mSysObjects系统表属性的自定义表:tblSysObjectFlags和tblSysObjectTypes。 这些反过来又用于三个自定义查询:qryQueryList,qryQueryListProperties和qryQueryNames。
要使用上面的屏幕快照中显示的开发者表单frmQueryList,您需要导入提到的表和查询,表单本身以及模块Public Functions中包含的自定义函数。
系统表mSysObjects包含一个字段,该字段标识有关对象的类型(表,查询,表单等)。 另一个字段标志标识该对象的类别(选择查询,交叉表查询等)。 mSysObjects的文档记录不充分,其类型和标志字段是数字。 两个自定义表将这些数字字段链接到文本标签,以自定义形式显示。
过滤列表框中显示的查询/表列表表单上的“搜索”框提供对输入的任何单词或短语列出的查询或表的过滤。

也可以搜索描述属性,但是这种搜索非常慢–自定义属性需要相对较长的时间来检索每个条目。
自定义排序当用户双击表单的列标签时,该表单按升序或降序提供自定义排序
名称 , 最近更新等。
Fields in Query [qryQueryNames]
Name Text
DateUpdate Date / Time
Object Name Text
Type Integer
Connect Memo
Database Memo
DateCreate Date / Time
RmtInfoShort Binary
RmtInfoLongLong Binary (OLE Object)
Owner Binary
LvPropLong Binary (OLE Object)
LvModuleLong Binary (OLE Object)
LvExtraLong Binary (OLE Object)
LvLong Binary (OLE Object)
ForeignName Text
Flags Long
Description Text
Exportable Boolean
使用Show SQL按钮将查询SQL导出到Word的示例:
SQL for Query [qryQueryNames]
SELECT
MSysObjects.Name,
MSysObjects.DateUpdate,
tblSysObjectTypes.[Object Name],
MSysObjects.Type,
MSysObjects.Connect,
MSysObjects.Database,
MSysObjects.DateCreate,
MSysObjects.RmtInfoShort,
MSysObjects.RmtInfoLong,
MSysObjects.Owner,
MSysObjects.LvProp,
MSysObjects.LvModule,
MSysObjects.LvExtra,
MSysObjects.Lv,
MSysObjects.ForeignName,
MSysObjects.Flags,
tblSysObjectFlags.Description,
tblSysObjectFlags.Exportable
FROM
(tblSysObjectTypes RIGHT JOIN
MSysObjects ON tblSysObjectTypes.[Object Type] = MSysObjects.Type) LEFT JOIN
tblSysObjectFlags ON (MSysObjects.Flags = tblSysObjectFlags.Flags) AND
(MSysObjects.Type = tblSysObjectFlags.Type)
WHERE
(((MSysObjects.Name) Not Like "MSys*" And (MSysObjects.Name) Not Like "~*") AND
((MSysObjects.Type)=1 Or (MSysObjects.Type)=4 Or (MSysObjects.Type)=5 Or (MSysObjects.Type)=6))
ORDER BY
MSysObjects.Name;
在本文中,我谈到了这种简单的前端表单的用法。 随意使用它,并根据自己的需要对其进行调整。
From: https://bytes.com/topic/access/insights/932041-developer-front-end-queries-tables
Access自定义前端表单

被折叠的 条评论
为什么被折叠?



