此事例主要针对Assets Web Database的应用。

创建Access Database模板

首先打开Access 2010并找到Asset Web Database模板,命名并创建;(此操作等同于在Sharepoint新建Asset Web Database站点,但优点在于前期开发时可以灵活对修改进行备份,并随时导入到开发环境或生产环境)默认创建的模板后会要求录入第一个人员信息;

注:除非非常清楚模板中每个数据和表的用处,否则请不要随便删除这些表和数据,否者容易导致整个数据库的崩溃,其实就是部分宏无法运行导致的无法使用。

Access 2010左侧导航栏分别列出了Tables、Queries、Forms和Reports,分别代表了列表、查询表、窗体和报表。列表:类似Excel的表单,实际上在Sharepoint上会以表单的形式体现;查询表:用于作为几个表单的数据关联,此为Access的精髓,也是最难处理的部分;窗体:此处的设计会直接呈现到Web页面,相当于对Asset门户进行修改,包括详细的数据项卡的编辑;报表:用于呈现数据报告;

image

1. 修改模板

对资产数据库的重新开发是比较大的工程,在没有足够的时间和熟练的Sharepoint开发技术的情况下,套用和修改模板会是比较快达到目的的捷径,当然,其中肯定会有一些功能可能无法达到预期,但整体的优势可以弥补其他不足。

Asset Web Database的原始模板是无法满足我们的应用的,例如资产表里就缺少了许多我们需要统计的数据,所以我们需要新建这些项,删除没有用处的。

? 修改表

a. 打开Assets表

image

b. 单击Click to Add会出现需要选择的数据类型,其中Lookup & Relationship选项的应用,是可以实现对另一个表中的某项数据进行提取或是自定义下拉可选项,类似Excel中的数据有效性设置;

image

? 修改窗体

Main窗体是包含所有窗体的集合,是呈现在Web页面的最终状态。

AssetDetails和UserDetails分别是对俄资产数据项和人员数据项的一个详细的表。

a. 修改它需要进入编辑模式,选择Access 2010左上角Layout View;(所有针对窗体的设计都有From View和Layout View两种模式,分别表示正常查看和编辑)

b. 删除我们不需要的数据,并选择Access 2010右上角Add Existing Fields来添加我们之前在Assets和Users表中添加的项;

image

c. 将其排序好并保存

AssetDS和UsersMain则是体现在Main窗体下的数据表,修改这两个表,等同于在Main窗体下对Assets和Users的修改,包括数据的字体和位置等。

a. 同样的选择Add Existing Fields添加我们需要的数据

image

b. 保存并关闭

? 修改Search

Main窗体中针对资产由Search功能,次功能主要是使用了宏,并调用查询表中的查询功能实现,我们在修改表后,一些新增加的数据是无法Search出来的,需要对查询表进行一些修改。

a. 找到AssetsExtended查询表并右击鼠标,选择Design View对其进行设计

image

b. 找到Access 2010下方Field:第三列,鼠标右击选择Build,之后按照原有格式,将我们需要添加可Search功能的项;

image

c. 之后保存并关闭

? 禁用数据表在Web窗体下的修改

考虑Access Database对数据的修改是实时的,为避免误操作导致数据变更,我们禁用再Web窗口时对数据表可编辑。找到AssetDS,并找到项目的属性,修改Edit为No。

? 创建报表

模板中的报表是完全不能满足我们使用的,所以需要重新设计较有针对性的报表,以最简单的项目组资产数量的统计为例。

a. 选择Assets表并选择创建报表,新建一个空报表,删除不需要在Report中显示的数据。

image

b. 这里显示的数据为所有Assets表中的数据,我们还需要筛选,右击需要筛选的选项,使用Filter和Sort功能实现数据的筛选和排序;

c. 之后选择数据,选择Count Records,对分组数据进行统计,得到了建议的报表

d. 默认的报表生成连接是需要宏来调用的,我们在Report Center页中新建一个按钮,之后修改该按钮的动作

image

e. 将默认报表按钮的宏进行Copy,粘贴到新的按钮中并进行修改。找到Object Name,将其修改为我们需要的报表名,已经存在的报表可以在下拉菜单中找到。

image

f. 保存并关闭

? Assets站点的发布

当我们的设计已经完成后,可以开始我们的发布工作了,将其发布到我们的Sharepoint站点上。

a. 打开我们的数据库模板,选择File,先择Publish to Access Services

b. 之后输入Server URL,开始发布

image

c. 发布完成后原有的Assets模板会创建一份“_Bakcup”的备份文件,方便今后出现问题还能以我们设计好的模板进行再发布。

2. 数据审批的实现

有些情况下,通过管理员对数据的统计和管理是非常浪费时间的,因此我们可以将数据的编辑开放给用户,管理员只需要对数据进行审批。实现该功能需要使用Sharepoint的版本控制和提醒功能。

默认在Sharepoint的Assets Web Database模板是禁用Sharepoint Designer的,这样的情况就会缺少很多自定义功能,大大局限我们的开发。因此,我们首先要启用Sharepoint Designer功能。

可以参考微软Office帮助文档:锁定Sharepoint Designer

? 启用Sharepoint Desinger

a. 登陆Sharepoint服务器,找到:<驱动器:>\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates\<网站类型>\XML。其中<驱动器:>为系统所在盘符,<网站类型>为Sharepoint模板站点类型目录。

b. 我们找到AccSrv,此为Assets Web Database模板的网站类型目录,修改XML目录下的onet.xml文件。

c. 找到DisableWebDesignFeatures=”wdfopensite”,并删除wdfopensite

image

d. 之后管理员运行CMD,运行iisreset重启IIS服务

image

e. 之后我们重新进入Assets站点,通过Site Permission我们能够进入Sharepoint站点,之后选择Edit in Sharepoint Designer,可是开始开发了。

? 禁止用户使用Access 2010修改数据

当我们需要让用户自行统计数据时,便会面临一个问题,我们的权限已经开放给用户,用户同样可以通过Access 2010打开之后对站点进行修改,这个我们不想看到的,我决定禁止用户使用Access 2010,但同时不影响自己使用。此方法比较绕,不能通过细化的权限根本解决问题,(主要是Access 2010并不支持权限到列表项的细化),仅供参考。

a. 打开Sharepoint Designer,在所有文件中,我们找到default.aspx文件,并进行编辑。

b. 找到设计页面中的Options并删除

image

c. 之后通过Access 2010在Main中创建可进入Site Setting的链接,只有站点管理员可以访问。

? 设置列表的审批功能

此功能是通过对列表进行版本控制和审批,外加提醒功能实现的。实际上在Access 2010中的两个表Assets和Users,在Sharepoint中都对应了同名的Sharepoint列表,因此我们将对这个表进行编辑。

a. 打开Assets列表,并选择List Setting

image

b. 选择Versioning Settings,并将Content ApprovalItem Version History都选择Yes

image

c. 之后设置Assets表对我的提醒功能。这样只要有人修改了数据,都会通过邮件进行通知,我将对修改的数据进行审批,如果审批通过,数据将按照修改后的显示,如果审批拒绝,我可以通过版本控制恢复之前的版本。

? 限制用户对数据可修改项目

我们可以针对列表的权限和站点的权限来控制用户的访问和修改,但无法做到针对列表中的每个项进行权限设置,因此可能会出现用户修改了我们不希望变更的数据,例如:资产中每个设备的编号、序列号、型号等都是固定不变的。因此,我决定在用户访问AssetDetails窗体时来进行限制。

a. 之前提到已经限制了不能在Main窗体下来直接修改数据,现在我们Copy AssetDetails窗体并命名;

b. 之后进入Layout View模式,选择数据框,选择属性

image

c. 在Data一栏中Enabled我们选择为No,这样数据框会变为灰色不可用状态;

d. 我们继续到Main窗体下,Asset列表,选择每一项的属性,修改双击的动作宏;

image

e. 将Form Name修改为我们新建的窗体,这样用户仅能通过双击数据来修改我们为其定义好的资产信息,仅有部分可以修改。

image

3. 总结

Access与Excel对数据管理的优势不一样,Access更偏向于表之间的关系查询。当然Access和Excel的数据是可以互导的,在一些场合的应用是非常有用的,尤其是原始资产是用Excel管理而打算转移到Access数据库的时候,又或者是Access统计的报表需要导出到Excel中时。

总之Access 2010在Sharepoint中的应用只是Sharepoint开发和管理的冰山一角,要真正把Sharepoint应用好还需要很多很多的时间、精力和实战经验。对于我这个偏应用的IT工程师来说,花费了近2个月时间一点一点摸索到这个份上,已经很满足了。希望这些经验的分享能帮助更多像我一样还处在Sharepoint初级应用的人。