access是不是计算机编程,access编程简介之二:用宏还是VBA?

时 间:2012-07-03 09:47:12

作 者:0e4933fc399eea74ad275630fc75a6ec.png

摘 要:Access编程简介之二:我应该使用宏还是应该使用 VBA 代码?

正 文:

要决定是使用宏或 VBA 还是同时使用这两者,主要取决于您计划部署或分发数据库的方式。例如,如果数据库存储在您的计算机上,您是唯一的用户,而且您使用 VBA 代码比较得心应手,那么您可能会决定使用 VBA 执行大部分编程任务。但是,如果您打算将数据库置于文件服务器上以便与其他人共享该数据库,那么出于安全方面的考虑,您可能会避免使用 VBA。如果您打算将数据库作为 Access Web Applications 发布,则必须使用宏(而不是 VBA)执行编程任务,因为 VBA 与 Web 发布功能不兼容。

Access Web Applications    Access Web Applications 是 Access 2010 的一项新功能,利用此功能,可以将应用程序发布到运行 Access Services 的 Microsoft SharePoint 服务器上。这样其他人就可以通过标准 Internet 浏览器使用您的数据库,而无需在他们的计算机上安装 Access。但是,由于 VBA 代码与 Web 发布功能不兼容,如果您计划将应用程序作为 Access Web Applications 发布,则只能使用宏执行编程任务。

设计新的 Access Web Applications 时,应在首次启动 Access 时首先单击“空白 Web 数据库”。这样可以限制能够用于创建数据库的功能,帮助确保 Web 应用程序成功发布。

客户端应用程序    如果您不打算将应用程序发布到 Access Services 服务器上,则应根据两个因素来决定使用宏还是使用 VBA 代码:安全性和所需的功能。之所以要考虑安全性,是因为 VBA 可用于创建危害数据安全或损坏计算机上的文件的代码。如果您使用的数据库是由其他人创建的,那么仅当您知道该数据库的来源可靠时才应该启用 VBA 代码。如果您创建的数据库将被其他人使用,那么您应该尽量避免包括需要用户特别准许数据库为可信状态的编程工具。避免需要用户信任您的数据库的一般技术将在本节后面的内容中讲述。

为了帮助确保数据库的安全,应该在可能的情况下尽量使用宏,而只使用 VBA 编程来完成使用宏操作无法完成的操作。此外,您应该尽量只使用不需要准许数据库为可信状态就可以运行的宏操作。以这样的方式限制宏操作的使用使用户可以确信,数据库中不包含任何可能会损坏其计算机上的数据或其他文件的编程。

宏注意事项

Access 2010 包含许多新的宏操作,与 Access 的早期版本相比,使用这些新的宏操作可以生成功能更加强大的宏。例如,您现在可以通过使用宏操作来创建和使用全局临时变量,并且可以通过使用新的错误处理宏操作更恰当地处理错误。在 Access 的早期版本中,这些类型的功能只有使用 VBA 时才可用。此外,您可以直接将宏嵌入到对象或控件的事件属性中。嵌入的宏将变成该对象或控件的一部分,并随该对象或控件一起被移动或复制。

宏提供了处理许多编程任务的简单方法,例如打开和关闭窗体以及运行报表。您可以轻松快捷地绑定您创建的数据库对象(表单、报表等),因为您几乎不需要记住任何语法。每个操作的参数都显示在宏生成器中。

除了宏提供的增强的安全性和易用性之外,您必须使用宏来执行以下任务:

将一个操作或一组操作分配给某个键。这需要创建一个名为 AutoKeys 的宏组。

在数据库首次打开时执行一个操作或一系列操作。这需要创建一个名为 AutoExec 的宏。

注释    AutoExec 宏在任何其他宏或 VBA 代码运行之前运行,即使您在“Access 选项”对话框中指定了启动窗体并将宏或 VBA 代码附加到了该窗体的 OnOpen 或 OnLoad 事件中也是如此。

VBA 注意事项

如果您要执行下列任一操作,那么应该使用 VBA 编程而不是宏:

使用内置函数或创建自己的函数    Access 中包括许多内置函数,例如 IPmt 函数,它可以计算应付利息。您可以使用这些内置函数执行计算,而无须创建复杂的表达式。通过使用 VBA 代码,您还可以创建自己的函数来执行超出表达式能力的计算或者替代复杂的表达式。此外,您还可以在表达式中使用自己创建的函数向多个对象应用公共操作。

创建或操纵对象    在大多数情况下,您会发现在对象的“设计”视图中创建和修改对象最容易。不过,在某些情况下,您可能想在代码中操纵对象的定义。通过使用 VBA,除了可以操纵数据库本身以外,您还可以操纵数据库中的所有对象。

执行系统级操作    您可以在宏内执行 RunApp 操作,以便在 Access 中运行另一个程序(如 Microsoft Excel),但您无法使用宏在 Access 外部执行更多其他操作。通过使用 VBA,您可以检查某个文件是否存在于计算机上,使用自动化或动态数据交换 (DDE) 与其他基于 Microsoft Windows 的程序(如 Excel)通信,还可以调用 Windows 动态链接库 (DLL) 中的函数。

一次一条地操纵记录    您可以使用 VBA 来逐条处理记录集,一次一条记录,并对每条记录执行操作。相反,宏将同时处理整个记录集。

Access软件网官方交流QQ群(群号:39785885)

Access源码网店

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语言三做一年级算题_一年级数学期末考试,学生交卷说能考100分,快让你家孩子试试吧...

时间不知不觉已到7月份了,各地小学将要迎来期末水平考试了,小学生也是十分开心,考完试又要放假了,更有小学生笑着对老师说“今年的假期有点长啊”,一句话把老师逗得哭笑不得。今天上午同事所在小学举行了一年级数学期末…

express+vue+mongodb+session 实现注册登录

上个月写了一篇文章是 expressmongodbvue 实现增删改查. 只是简单的实现了增删改查功能,那么今天是在那个基础之上做了扩展,首先实现的功能有如下: 1. 支持注册,登录功能,用户可以注册完成后,进行登录&…

linux(2):linux命令查看开放哪些端口

linux命令查看开放哪些端口 netstat -nupl (UDP类型的端口) netstat -ntpl (TCP类型的端口) a 表示所有 n表示不查询dns t表示tcp协议 u表示udp协议 p表示查询占用的程序 l表示查询正在监听的程序 netstat -nuplf|grep 3306 //这个表示查找处于监听状态的,端…

tcp 压力 测试 软件,强大的TcpServer压力测试工具及源码(附突破连接限制的方法和工具)...

压缩包 : 强大的TcpServer压力测试工具及源码(附突破连接限制的方法和工具).rar 列表G-Sockets(压力测试工具源码)\Demos\G-TcpClientDemo\G-TcpClientDemo.apsG-Sockets(压力测试工具源码)\Demos\G-TcpClientDemo\G-TcpClientDemo.cppG-Sockets(压力测试工具源码)\Demos\G-Tcp…

java 添加注解_你知道Java中的package-info的作用吗?

package-info.java对于日常业务开发的开发者来说,可能有点陌生,如果我们再项目中创建一个package-info.java,你会发现该类只有一个packge,如下我们无法在该java文件中定义public的类但事实上,package-info.java还有它的…

if else的使用以及如何从键盘获取数值

if-else的使用 顺序结构 顺序从上到下执行,中间没有判断和跳转 分支结构 根据条件,选择性地执行某段代码 有if-else和switch两种分支语句 循环结构 根据循环,重复性地执行某段代码 有while、do...while、for三种循环结构 如何从键盘获取数值 …

linux(3):Linux MBR分区、挂载操作步骤,逻辑卷扩容操作

Linux MBR分区、挂载操作步骤,逻辑卷扩容操作 服务器开机之后,能自动识别出硬盘,但是硬盘不能够存储数据,必须对硬盘进行分区、格式化、挂载后才能使用;linux主分区和拓展分区总数不能超过4个,拓展分区最…

计算机应用于材料组织结构检测,计算机在材料检测中的应用

计算机在材料检测中的应用[摘要]随着信息时代的来临,计算机应用已经成为社会发展的动力和趋势,其在各个行业中都有广泛的运用,在材料检测中更是运用广泛,成为材料检测的最有效手段。而要发挥计算机在材料检测这的巨大作用&#xf…

golang 没有名字参数_Go 返回参数命名

Go 返回参数命名在Golang中,命名返回参数通常称为命名参数。Golang允许在函数签名或定义中为函数的返回或结果参数指定名称。或者可以说这是函数定义中返回变量的显式命名。基本上,它解决了在return语句中提及变量名称的要求。通过使用命名返回参数或命名…

11 Python之初识函数

---恢复内容开始--- 1. 什么是函数?   f(x) x 1   y x 1   函数是对功能或者动作的封装 2. 函数的语法和定义   def 函数名():     函数体   调用:   函数名() 3. 关于函数的返回值   return : 返回     1. 当程序没写过return, 不返回任何结果. 如…

python对象属性在引用时前面需要加()_python基础-面向对象进阶

实现授权的关键点就是覆盖__getattr__方法1、通过触发__getattr__方法,找到read方法示例1:1 importtime2 classFileHandle:3 def __init__(self,filename,moder,encodingutf-8):4 self.fileopen(filename,mode,encodingencoding)5 self.modemode6 self.encodingenco…

linux(4):Linux逻辑卷详解总结

LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性。 LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大…

您的计算机和打印机上的打印纸设置不匹配,打印纸张不符合打印要求、类型与设置不符-打印机上门维修复印机...

从网上复制了一个以tab排版的表格,智能导入Calc很顺利,由于用的是OpenOffice打印的时候却遇到了麻烦,A4纸竖着打印会丢失栏目,按MSOffice下的老地方去找横向打印设置,未果,最后还是在网上找到了答案&#x…

Android 布局优化

include标签共享布局 include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。例如我们在进行App开发时基本每个页面都会有标题栏,在不使用include的情况下你在每个界面都需要重新…

计算机二级1605错误,word 出现windows installer 1605错误

您好,我们了解到您在启动Word 2013时遇到Windows installer 出现错误1605 问题。该问题有可能是Word模板损坏获取优化清理操作导致系统文件损坏。建议您尝试以下方法是否能否解决问题:1.退出所有Office程序2.确保以下文件夹内无任何文件:C:\P…

前端扁平化数据转树形数据_把平级数据变成树形数据

为了记住这个方法:转化数据[{element:图片,id:1,pid:0},//count1{element:大图片,id:2,pid:1},{element:png,id:3,pid:2},{element:jpeg,id:4,pid:2},{element:gif,id:5,pid:2},{element:gif11,id:6,pid:5},{element:gif111,id:7,pid:6},{element:gif222,id:8,pid:6…

曾国藩:诚敬静谨恒!

曾国藩:诚敬静谨恒。诚:民无信不立!人与人交往,最讲究诚字。与他人坦诚,说话有诚信,对人诚心,自然会受到他人喜爱和尊重。敬:月满则亏,物盛则衰!要想成大事,需…

java学习(103):字符串概述

//字符串概述 public class test40 {public static void main(String[] args){char[] str1{1,2,3,4,5,6,7,8,9};String str2new String("我是歌谣");String str3new String(str1);String str4new String(str1,3,4);String str5new String("\"\\");Sys…

计算机服务哪些不能关闭,Win7系统下哪些系统服务不能关闭

为了让系统能够更快的启动,很多用户会选择禁用一些系统服务,但并不是所有的服务都能够禁用关闭的,下面是小编与大家分享的Win7系统下哪些不能关闭的服务,保证大家的电脑能够正常的运行。第一、DHCPClient服务这款服务是电脑获取IP…

java学习(104):字符串equals,charAt,endwith,startwith方法

//String方法 public class test41 {//比较两个人的姓名是否相同public static boolean eqName(String name1,String name2){return name2.equals(name1)?true:false;}//按照给定的字符的索引返回public static char findNUM(String resouse,int index){if(index<0||index&…