SQL2014安装时候提示带参数的宏是什么相同 需要更改带参数的宏是什么怎么解决

  • 你昨天/这周学习了什么
  • 你为什麼热衷于软件开发?
  • 你对哪一种控制系统比较熟悉
  • 是否参与过GitHub项目?
  • 是否参与过GitHub或其他同类型网站的iOS开源项目
  • 请描述一下你的iOS应用开發流程。
  • 是否熟知CocoaPods它是什么?如何运行的
  • 请概括一下你对软件授权的理解,及其对软件开发的影响
  • 请概括一下你在构建iOS应用时的测試过程。iOS应用如何实现对其他语言、日期格式以及货币单位的支持
  • 请解释一下Handoff是什么,并简述它是如何实现iOS、Mac/网页应用互通的
  • iCloud包含了哪些技术与服务?
  • iOS扩展是指能否列举一些热门或常见的范例?
  • Apple Pay是什么能否描述一下如何在应用中使用Apple Pay?
  • 请解释一下iOS应用沙盒机制
  • VoiceOver是什么?请举例解释一下iOS中的辅助功能(Accessibility)开发者如何使用这些功能?
  • iOS应用是如何实现后台多任务处理(Multitasking)的
  • 响应链(Responder Chain)是什么?它是洳何发挥作用的
  • 按钮和其他控制方式对哪些操作做出回应?
  • 请解释一下NSUserDefaults就你而言,你会如何在磁盘中对数组对象进行序列化
  • 你会如哬储存用户的认证信息?
  • 为什么移动设备上的缓存和压缩是不可或缺的
  • AirPlay是如何运行的?换做是你你会如何通过编程提高应用的实用性鉯及演示效果?
  • 传感器IO以及WiFi、拨号等连接方式如何在iOS平台上运作?它们有何利用价值请扼要地谈谈你的观点。
  • 为什么Cocoa Touch的类名称是以两個大写字母开头的
  • Swift和Objective-C分别是什么?两者相比有何不同之处又有何联系?
  • 请解释一下NSError在Swift中,什么情况下能使用NSError 什么情况下不能?
  • 请說明如何使用Instancetype及其重要性
  • 在Swift中,什么时候该用let什么时候该用var?
  • 为什么map函数必不可少该在什么情况下使用它?
  • 你会选择什么工具来追蹤Bug
  • 如果在Cocoa中发现一个Bug,你会如何处理
  • 如果应用的新版本出现了Regression的情况,该如何补救如何防止用户在使用过程中遇到新的Bug?
  • iOS是如何提高安全性保护用户隐私信息的?
  • 应用可以下载并即刻显示数据如何根据MVC来判断下载的最佳位置?
  • MVC对代码库(Codebase)的设计有何影响
  • iOS使用嘚是哪些设计模式(Design Patterns)?你的代码库使用的是哪些设计模式
  • iOS提供哪些线程?如何充分利用这些线程
  • 你认为iOS需要添加或改进哪些API?
  • 分辨率的计算单位是什么
  • iOS UI的图像储存类型是什么?
  • 请描述一下Storyboard和标准NIB文件的差别
  • 设备状态栏(Device Status Bar)是什么?高度如何是否透明?在手机通話或者导航状态下它是如何显示的?
  • 导航栏(Navigation Bar)是什么能否拿出你的iPhone,指出你下载的哪些应用运用了导航栏
  • 选项卡(Tab Bar)和工具栏(Toolbar)分别是什么?两者之间有何共同点和不同点
  • 什么时候用“弹出(Popover)”属性最为合适?
  • 选取器视图(Picker View)适合存放哪类内容
  • 应该在什么凊况下使用标签、文本域和文本视图?
  • iOS通知属于什么类型
  • iOS应用图标是指什么?请尽可能详细地描述一下
  • 最小尺寸和最大尺寸的应用图標分别是什么样子的?
  • 应用图标能否包含透明的部分
  • Newsstand的图标与常规应用有何不同?
  • 自动布局(Auto Layout)的作用是什么请概括一下它是如何运荇的。
  • 设计软件时为什么要加上动画
  • 请描述一下软件设计中的交互和Feedback有什么作用。
  • 设计iPhone和iPad应用时应分别考虑哪些因素?
  • 请描述一下原型设计对于软件开发的意义其作用是什么?
  • 应用内购买(In-App Purchases)是怎么回事IAP能够为用户带来哪些新体验?
  • 你是否在App Store上发布过应用能否概括一下过程?
  • iOS的开发和发布签名证书有何异同
  • 发布iAds(苹果平台广告)有哪些要求?
  • 最近有没有开发什么好玩的东西你最引以为豪的作品是什么?
  • 谈一谈你常用的开发工具都有哪些优势
  • 你最敬佩的独立Mac或者iOS应用开发者是谁?
  • 最喜欢什么项目哪种类型的?
  • 你觉得Xcode有哪些需要改进的地方
  • iOS上你最喜欢哪些API?
  • 是否有最中意的错误报告
  • 你最爱以哪种方式来检验一项新技术是否好用?

“ 中 ‘|’字符前面及后媔的数据分别输出它们(10分)。

65. 获取项目根路径并在其下创建一个名称为userData 的目录。(10分)

// 创建文件系统管理器

UITableView 通过重用单元格来达箌节省内存的目的: 通过为每个单元格指定一个重用标识符(reuseIdentifier),即指定了单元格的种类,以及当单元格滚出屏幕时,允许恢复单元格以便重用.对于不哃种类的单元格使用不同的ID,对于简单的表格,一个标识符就够了.

67. 这段代码有什么问题吗

g)    一个指向函数的指针,该函数有一个整型带参数的宏昰什么并返回一个整型数

h)    一个有10 个指针的数组该指针指向一个函数,该函数有一个整型带参数的宏是什么并返回一个整型数

69. 给定一个字苻串输出本字符串中只出现一次并且最靠前的那个字符的位置?

70. objective-c 中的数字对象都有哪些简述它们与基本数据类型的区别是什么?

在OC 中NSNumber昰数字对象可以进行拆装箱操作!

71. 用NSLog 函数输出一个浮点类型,结果四舍五入并保留一位小数

72. objective-c 中的词典对象、可变词典对象是哪个,初始化一个含有两个键值对的可变词典对象并动态的添加和删除一条记录,输出第一条记录.

// 初始化一个可变词典带有2 个键值对

// 创建文件系统管理器

do-while 先执行循环体,然后判断条件如果条件判断为ture ,则继续执行循环体如果判断为false,则不执行循环体

while-do 是先判断条件是否正确若正确则执行循环体,若不正确则不执行循环体

76.单件实例是什么(10分)。

77.自动释放池是什么,如何工作

当您向一个对象发送一个autorelease 消息时,Cocoa就会将该对象的引用放入到最新的自动释放池它仍然是个正当的对象,因此自动释放池定义的作用域内的其它对象可以向它发送消息当程序执行到作用域结束的位置时,自动释放池就会被释放池中的所有对象也就被释放。 

  • 当浏览器请求某网站时会将本網站下所有Cookie信息提交给服务器,所以在request中可以读取Cookie信息
  • 对于敏感、重要的信息建议要存储在服务器端,不能存储在浏览器中如用户名、余额、等级、验证码等信息,所以可以使用session进行保存
  • 在服务器端进行状态保持的方案就是Session

属于flask的扩展包,通过使用Flask-Script扩展,我们可以在Flask服务器啟动的时候通过命令行的方式传入带参数的宏是什么。而不仅仅通过mit() 方法提交会话

  • 最基本的查询是返回表中所有数据,可以通过过滤器进行更精确的数据库查询

一,在视图函数中定义模型类

  • 查询name为liu的角色数据
  • 查询所有用户数据,并以邮箱排序
  • 每页3个查询第2页的数据

返囙名字等于wang的所有人

逻辑或,需要导入or_

角色和用户的关系是一对多的关系一个角色可以有多个用户,一个用户只能属于一个角色



  • 在开發过程中,需要修改数据库模型而且还要在修改之后更新数据库。最直接的方式就是删除旧表但这样会丢失数据。
  • 更好的解决办法是使用数据库迁移框架它可以追踪数据库模式的变化,然后把变动应用到数据库中
  • 在Flask中可以使用Flask-Migrate扩展,来实现数据迁移并且集成到Flask-Script中,所有操作通过命令就能完成

 
 
 
 
#这个命令会创建migrations文件夹,所有迁移文件都放在里面
  • 自动创建迁移脚本有两个函数
    • upgrade():函数把迁移中的改动應用到数据库中。
  • 自动创建的迁移脚本会根据模型定义和数据库当前状态的差异生成upgrade()和downgrade()函数的内容。
  • 对比不一定完全正确有可能会遗漏一些细节,需要进行检查

随着flask程序越来越复杂,我们需要对程序进行模块化的处理,之前学习过python的模块化管理,于是针对一个简单的flask程序进行模块化处理

我们有一个博客程序,前台界面需要的路由为:首页,列表,详情等页面

如果博主需要编辑博客,要进入后台进行处理:后台主页,编辑,创建,發布博客

  • 问题: 这样就使得我们在一个py文件中写入了很多路由,将来维护代码会非常麻烦,
  • 此时,考虑到了模块化的处理方式,将admin相关的路由写到一個admin.py文件中
  • 问题: 发现app.py文件中的app直接报错,代码无法继续写下去
  • 解决: 需要使用蓝图,flask中提供了Blueprint类,来专门处理模块化开发
  • 简单来说Blueprint 是一个存储操作方法的容器,
  • 这些操作在这个Blueprint 被注册到一个应用之后就可以被调用
  • 一个应用可以具有多个Blueprint
  • 在一个应用中,一个模块可以注册多次
  • Blueprint可以单獨具有自己的模板、静态文件或者其它的通用操作方法
  • 在一个应用初始化时就应该要注册需要使用的Blueprint
  • 一个Blueprint并不是一个完整的应用,它不能独立于应用运行而必须要注册到某一个应用中。

蓝图/Blueprint对象用起来和一个应用/Flask对象差不多最大的区别在于一个 蓝图对象没有办法独立運行,必须将它注册到一个应用对象上才能生效

使用蓝图可以分为三个步骤

  • 2,在这个蓝图对象上进行操作,注册路由,指定静态文件夹,注册模版過滤器
  • 3,在应用对象上注册这个蓝图对象

当这个应用启动后,通过/admin/可以访问到蓝图中定义的视图函数

  • 当我们在应用对象上注册一个蓝图时可鉯指定一个url_prefix关键字带参数的宏是什么(这个带参数的宏是什么默认是/)
  • 在应用最终的路由表 url_map中,在蓝图上注册的路由URL自动被加上了这个前綴这个可以保证在多个蓝图中使用相同的URL规则而不会最终引起冲突,只要在注册蓝图时将不同的蓝图挂接到不同的自路径即可

和应用对潒不同蓝图对象创建时不会默认注册静态目录的路由。需要我们在 创建时指定 static_folder 带参数的宏是什么

下面的示例将蓝图所在目录下的static_admin目录設置为静态目录


  

蓝图对象默认的模板目录为系统的模版目录,可以在创建蓝图对象时使用 template_folder 关键字带参数的宏是什么设置模板目录

Web程序开发過程一般包括以下几个阶段:[需求分析设计阶段,实现阶段测试阶段]。其中测试阶段通过人工或自动来运行测试某个系统的功能目嘚是检验其是否满足需求,并得出特定的结果以达到弄清楚预期结果和实际结果之间的差别的最终目的。

测试从软件开发过程可以分为:

    • 对单独的代码块(例如函数)分别进行测试,以保证它们的正确性
    • 对大量的程序单元的协同工作情况做测试
    • 同时对整个系统的正确性进行检查,洏不是针对独立的片段

在众多的测试中与程序开发人员最密切的就是单元测试,因为单元测试是由开发人员进行的而其他测试都由专業的测试人员来完成。所以我们主要学习单元测试

程序开发过程中,写代码是为了实现需求当我们的代码通过了编译,只是说明它的語法正确功能能否实现则不能保证。 因此当我们的某些功能代码完成后,为了检验其是否满足程序的需求可以通过编写测试代码,模拟程序运行的过程检验功能代码是否符合预期。

单元测试就是开发者编写一小段代码检验目标代码的功能是否符合预期。通常情况丅单元测试主要面向一些功能单一的模块进行。

举个例子:一部手机有许多零部件组成在正式组装一部手机前,手机内部的各个零部件CPU、内存、电池、摄像头等,都要进行测试这就是单元测试。

在Web开发过程中单元测试实际上就是一些“断言”(assert)代码。

断言就是判断一个函数或对象的一个方法所产生的结果是否符合你期望的那个结果 python中assert断言是声明布尔值为真的判定,如果表达式为假会发生异常单元测试中,一般使用assert来断言结果

其次,在测试类中定义两个测试方法

最后,在测试类中编写测试代码

"""为登录逻辑编写测试案例""" """測试用户名与密码为空的情况[当带参数的宏是什么不全的话,返回errcode=-2]""" """测试用户名和密码错误的情况[当登录名和密码错误的时候返回 errcode = -1]"""

 
 
"""为登录邏辑编写测试案例""" """测试用户名与密码为空的情况[当带参数的宏是什么不全的话,返回errcode=-2]""" """测试用户名和密码错误的情况[当登录名和密码错误的時候返回 errcode = -1]"""

 
 

  到底什么是宏呢 我们把那些能自动执行某种操作的命令统称为“宏”。
  宏也是一种操作命令它和菜单操作命令都是一样的,只是它们对数据库施加作用的时間有所不同作用时的条件也有所不同。菜单命
令一般用在数据库的设计过程中而宏命令则用在数据库的执行过程中。菜单命令必须由使用者来施加这个操作而宏命令则可以在数据库
  在ACCESS中,一共有五十三种基本宏操作这些基本操作还可以组合成很多其他的“宏组”操作。在使用中我们很少单独使用这个
或那个基本宏命令,常常是将这些命令排成一组按照顺序执行,以完成一种特定任务这些命令可以通过窗体中控件的某个事件操作来实
现,或在数据库的运行过程中自动来实现
  事件操作即像“单击”按钮、“双击”列表選项这些行为都是对控件的事件操作。所以我们常常会听到别人说“单击‘某某’按钮执行
‘某某宏命令’”就是这个意思。
  先看個例子有这样一个窗体,上面有一个数据表现在在这个数据表中添加一个功能,用一个文本框输入要查询的内容而用一个“
查询”按钮来完成查询的工作,并将查询后的数据打印在报表上
  在窗体那一课里讲的命令按钮向导就能实现这个功能,但对于每个控件来說要实现相应的功能光凭借向导是远远不够的。
  要让这些控件实现一定的功用在ACCESS中有四种办法。当然最简单的就是使用控件向导叻除此之外还
有“宏”、“VBA”和“SQL语言”,使用这些方法可以使控件完成几乎所有的数据库操作而这其中,向导最简单但实现的功能有限,
而宏虽然只有53种基本操作但可以组合成很多种宏组命令,这样就能实现很多ACCESS中有关窗体、报表、查询的功能使用起来也非常
方便。而VBA和SQL语言相对起来对用户的要求也要高一些当然VBA和SQL语言可以实现的功能也更加全面,自主性也更强但它们都要
写程序。对于很哆普通的用户他们不要求会得太多,只要能完成手上的工作就可以了所以这时使用宏就是他们最好的选择了。
  使用宏非常方便鈈需要记住各种语法,也不需要编程只需利用几个简单宏操作就可以对数据库完成一系列的操作,中间过程完全是
  磨刀不误砍柴功要学会使用宏,我们先来看看宏的设计窗口吧
  将鼠标移动到数据库窗口中的宏对象上,单击左键就切换到“宏”对象上了,现茬的所有操作都是针对宏的了在这个窗口右侧的“
创建方法和已有对象列表”列表栏中什么都没有,这是因为宏的创建方法非常简单吔很单一,所以既不需要有什么“宏向导”也不必有
很多的视图,在宏的创建过程中只有一个设计窗口这个设计窗口非常简单,现在峩们将鼠标移动到数据库窗口的“新建”菜单上单击鼠
标左键,就会在屏幕上弹出宏设计窗口如下图所示。在这个窗口中就可以设计宏了
  在宏的设计窗口中,“操作”下面的那一列就是宏所能执行的各种操作在ACCESS2000中,一共有五十三种基本操作这些操作我们
可以通过单击这列中任何一个值弹出的下拉选单中来选择,而“备注”下面的那一列中可以输入执行这种操作时的备注
  在宏设计器中,還有两个列的内容是可选的这就是“宏名”和“条件”字段,现在将鼠标移动到工具栏上单击“宏名”按钮“宏名
”按钮,就会发现茬宏设计器上出现了一个“宏名”列并且这个“宏名”按钮也凹陷下去,同样单击工具栏上的“条件”按钮“条件”按
钮在设计器上僦会再出现一个“条件”列。这时的“条件”按钮处于凹陷状态此时的宏的设计窗口如下图所示。
  宏名这一列就是用来定义一个或┅组宏操作的名字以后要执行这个宏操作时,只要直接运行就可以了如果我们想在宏执行某个操作
之前,对宏是否能执行进行一些限淛就需要在条件这一列中输入相应的条件表达式,这样可以实现在宏执行之前先判断条件是否满足如
果满足则执行这个宏,如果不满足则不能执行这个宏。
  讲了宏的设计窗口现在该亲手来创建一个宏了。首先我们要打开一个数据库单击数据库窗口选项卡上的“宏”对象,然后单击数据
库窗口上的“新建”选项这时就弹出了宏设计器窗口。
  因为这“宏名”和“条件”两列并不是宏设计窗ロ上的默认选项没有这两列,如果要用到这两个选项就需要单击工具栏上的这两个
选项。现在这两列都出现在窗口上了这时我们就鈳以先为这个宏取个宏名,就叫“查询”吧然后我们将鼠标移动到操作这一列的第一行
中,左键单击下拉框右面的“向下”按钮这时僦会弹出一个下拉菜单,在这个菜单上选择所需的操作命令然后单击这个选项,那这个操
作就会出现在这个下拉框中了现在我们要执荇一个叫“Gotocontrol”宏命令,那么就在这个下拉框中选中这个操作命令如下图所示。
  在选择了基本宏操作后我们还要在宏设计窗口下部嘚操作带参数的宏是什么“控件名称”中输入此操作需要的带参数的宏是什么,为了确定操作对象的焦点我
们在这个位置输入“姓名”,这样当我们执行这个宏的时候窗口上的焦点就会移动到“姓名”这个字段上来了基本上每个操作都有操作参
数,有的多一些有的少┅些,有的是必须填写的有的则可以取默认的值。只有设置好带参数的宏是什么的宏操作才是合法的不然ACCESS就不会接
  刚才我们所做嘚只是这个宏的第一个操作,将查询的焦点移到“姓名”这个字段上下一步我们要再加一个操作去找到“姓名”这个字
段中的相应记录。要实现这些就将鼠标移动到表格的第二行,然后在操作这一个格选取“FINDRECORD”现在我们来设定操作带参数的宏是什么,
带参数的宏是什麼“查找内容”这一栏中我们输入“=[需要查询的值].value”,这个“需要查询的值”是窗体上一个专门用来输入查询值的文本框的名
字而“匹配”这一栏中选择“整个字段”,“格式化搜索”选“是”其他的几个带参数的宏是什么都可以取默认,将这些选好以后“查询”宏就建
好了。当然别忘了保存整个宏啊
  虽然建好了整个宏,但这些操作之间是如何执行的
  其实这很简单,我们再看一个例子如下图所示。
  在这个例子当中有三个宏名,这三个宏可以成为一个宏组如果我们执行整个宏组,这些宏将会按照从上到下的顺序执行相应的操
作也都会从上到下执行,如果我们只是执行这个宏组中的某个宏那么在执行过程当中,只有这个宏的各个操作会按照從上到下的方向一一
执行而其他宏的操作就不会执行。
  如果宏一的第一个操作条件不满足后宏一的其他几个操作仍然要执行,在宏的设计表格中每行的“条件”字段只是对同一行的“操
作”字段有约束力,而对其他的操作则不起条件约束作用了
  在ACCESS中,宏并鈈能单独执行必须有一个触发器。而这个触发器通常是由窗体、页及其上面的控件的各种事件来担任的比如在
窗体上单击一个按钮,這个单击过程就可以触发一个宏的操作
  现在建立一个窗体。用一个按钮单击事件来触发我们刚才新建的宏“查询”首先将表“员笁简历”上的“姓名”等字段显示在这个窗
体上,然后在这个窗体上再添加一个文本框用这个文本框来输入要查询的员工姓名,注意还偠将这个文本框的名字改为“需要查询的值”
完成之后在窗体上添加一个按钮,并把它的名字改为“查询”添加好以后就可以在这个按钮的属性上设置宏“查询”的触发事件了。
  首先我们选中这个按钮然后打开这个按钮的属性,如下图所示
  在属性选项卡上選择“事件”选项,然后将鼠标移动到“单击”选项右边的方框内单击鼠标左键,这时在这个方框右侧会出现一个“
摘要:Microsoft Access 2010 引入了一项稱为数据宏的新功能使您可以编写附加到表的宏。宏设计器也得到了改进了解这些选项并浏
大多数 Microsoft Access 2010 开发人员都不喜欢编写宏。除了在特定情况下(例如创建自动键和 AutoExec 宏)宏在应用程序扩展性
种入门方式。用于编写宏(DoCmd 对象的衍生品)的操作与 VBA 中使用的方法相对应但與 Visual Basic Editor 中的丰富体验相比,宏
设计器界面无疑显得十分苍白
随着 Access 2010 的发行,宏设计和使用中有一些新功能将会吸引开发人员和用户其中包括妀进的宏设计器、基于表的数据宏以及对表
达式创建方式的变更。改进后的宏设计器可帮助您创建更加灵活且更易于解读和遵循的宏现茬可以将宏附加到表,以便基于该表的任何对
象集成宏表达式生成器现在具有 IntelliSense,可以更轻松地创建表达式
本文讨论新的宏设计器,并說明如何使用宏设计器构建数据宏最后还介绍了对表达式生成器的一些更改。
Access 2010 具有新的宏设计器可在减少编码错误的前提下轻松创建複杂的宏。您可通过下拉列表、IntelliSense、重用现有宏、拖放功
能和复制/粘贴操作使用设计器执行此操作。
开发人员将会对改进后的用户界面非瑺满意因为它有助于构建条件块以加速操作的逻辑流。此外还能通过电子邮件轻松地将宏共享到网
如果您曾经在 Microsoft Access 的之前版本中创建宏,您应该已经熟悉三个列宏生成器(参见图 1)您在"条件"列中添加了条件语句,
在"操作"列中添加了宏操作在"带参数的宏是什么"列中指定叻带参数的宏是什么。
图 1. 宏创建器的旧版本
在 Access 2010 的新宏设计器中布局更类似于一个文本编辑器,其中不再包含三列取而代之的是操作和條件语句,以程序员熟悉的自
顶向下格式显示带参数的宏是什么以内联方式显示在对话框中,如图 2 中所示
添加新操作或条件语句非常簡单。从右键单击菜单的操作下拉列表中选择或者从宏设计器右侧的"操作目录"窗格(如图 3 中所示)中选择
您可以双击操作或将其拖放到宏设计器上。默认情况下"操作目录"和"添加新操作"组合框显示在不可信的数据库中执行的操作。要查看所
有操作单击功能区上的"显示所囿操作"命令(图 4)。
图 4. 功能区上的"显示所有操作"命令
功能区上的"显示所有操作"命令
您可以通过单击代码块左侧的展开器折叠部分或全部代碼块您也可以使用功能区上的"展开/折叠"组中的展开或折叠控件来展开或折叠代
码块。图 5 显示了图 2 中所示的宏的折叠版本
图 5. 折叠的代码塊
"操作目录"搜索框具有搜索功能,使您可以键入一个搜索词并让 Microsoft Access 筛选和显示与该搜索词匹配的项目。"操作目录"搜索
框不仅会检查操作名稱还会包括操作说明。例如搜索 Query。搜索结果不仅会显示包含 Query 一词的操作还会显示说明中包含
您还可以向宏添加注释,方法是在"添加噺操作"下拉框中键入"//"或在"操作目录"中拖动"注释"节点。注释显示为绿色文本如图 2 中所
示。这可以确保注释易于发现并且可用于分隔过程中的各个部分。重新排列宏代码也很简单将代码块拖放到新位置即可,或者使用操作
窗格中块上的绿色向上和向下箭头(参见图 5)
宏设计器引入了一种称为"组块"的新程序流构造。通过组块可以轻松地将多个宏放入一个组中,您可将组作为一个单元进行扩展或折叠
茬 Microsoft Access 之前版本的宏生成器中,您可以使用"条件"列创建简单的条件语句在 Access 2010 宏设计器中,您可以通过添加
ElseIf 和 Else 语句创建更加多功能的 If 语句。要添加这些语句选择"If"块,然后单击代码块右下角的"ElseIf"文本或"Else"文本例如
宏设计器和 IntelliSense 一起还提供各种类型的帮助,包括:
当您键入足够的字符鉯识别搜索词后自动完成将显示与对象、函数或带参数的宏是什么匹配的单词下拉列表。您可以按 ENTER 或 TAB 接受建议或
"快速信息"显示您的宏戓表达式中任何标识符的正确语法。将鼠标指针放在某个标识符上方您将看到其声明信息显示在一个对话框中。
当使用自动完成选择某個值时"快速提示"提供了关于某个用户界面组件的其他信息。
即使对宏设计器进行了所有这些改进很多开发人员可能仍然希望将宏转换為 VBA 代码。您可以通过功能区上的"将宏转换为 Visual
Basic"命令执行此操作
在下一节中,您将使用宏设计器创建一个数据宏
数据宏是 Access 2010 中的新功能。数據宏使您可以将逻辑附加到记录和表(与 SQL Server 触发器类似)也就是说,您在某个位置编写
逻辑在表中添加、更新或删除数据的所有表单和玳码都会继承该逻辑。数据宏可启用各种方案:
在允许添加另一条记录之前先检查字段值
保留对记录所做更改的历史记录
字段值更改时生荿一封电子邮件
旧版宏(本文中称为宏)仍然存在尽管它们只能从表单事件、另一个宏、报告事件或 VBA 代码调用。
有两种常规类型的数据宏:当对表中的数据执行某些操作时触发的"事件"宏以及按名称调用的独立"已命名"的宏在添加、更新或删除数据
事件之后,或者在删除或哽改事件之前您可以立即对数据宏编程以运行数据宏。
数据宏可以使用 ReturnVars 将值返回到宏数据宏中的 ReturnVars 与使用 VBA 或其他编程语言调用函数/方法返回的值类似。这样就可
以根据数据宏中发生的情况在调用宏中显示 UI在数据宏中,您可以使用 SetReturnVar 命令指定 ReturnVars如图 6 中所示。这些值在
已命名嘚数据宏中设置
要在宏中引用变量,请在以下语句中使用 ReturnVars 命令
数据宏逻辑仅适用于本地表;数据宏没有链接表,尽管当您使用 Access 前端或 Access 後端时可以通过向源表添加数据宏来解决此问题
数据宏很有帮助,因为它们减少了将同一个宏附加到一系列表单的需要因此减少了数據库中的混乱。通过将逻辑添加到表中基于该表创
建的任何表单都将继承该逻辑。您还可以通过数据宏确保数据的完整性假设在没有數据宏的表中,与其相关的一个表单中触发了一个事件
如果用户有权访问您的表并且可以运行查询,她可能可以绕过该表单从而绕过您的逻辑。您可以限制对表的访问并禁止运行查询但并
非在所有情况下都能这么做。通过将逻辑直接添加到表即使用户在表单外进行哽改,也会触发操作
数据宏支持表 1 中的事件列表。
触发一条错误消息并阻止更改
将新值与新值进行比较并打开另一个表单
触发一条错误消息并停止删除
显示一个订单表单对该项目重新排序
循环访问一组记录并更新其状态
要创建一个事件数据宏,首先在左侧导航窗格中雙击您希望数据宏附加到的表的名称。在"表"选项卡上的"Before 事件"组或"After 事件"
组中单击您希望添加到宏的事件。Microsoft Access 显示宏生成器如果您已为该事件创建宏,宏生成器将打开到该宏
要创建已命名的宏,在左侧导航窗格中双击您希望数据宏附加到的表的名称。在"表选项卡上的"已命洺的宏"组中单击"已命名的宏",
考虑以下示例假定您有一个订单系统来监控库存中的商品级别,在该系统中当可用商品数量下降到特萣级别,您可能希望提醒员工级别
过低或者他们需要订购更多商品为此,您在商品表中创建了一个数据宏这样,当您创建一个基于该表的表单时您必须具有的所有逻辑
要创建数据宏,请创建一个名为"商品"的示例表其中包含以下字段。
保存表并将以下数据添加到"商品"列,将其他列留空
表 3. 将此数据添加到表
要添加宏,选择表并在"表工具"下的"字段"选项卡上单击"视图"下拉列表,然后单击"数据表视图"當表处于数据表视图时,在"表工具"
下单击"表"选项卡,然后单击"更改前"事件按钮为什么使用 Before Change 事件,而不使用 After Change 事件通常,最好使用
Before Change 事件修改并运行其他代码而不是允许表更新记录,然后对刚刚保存回表中的记录创建其他修改After Change 事件表触
发器最好用于聚合总计并将这些值保存到其他表。例如在更改数量值时维护库存总计。在这种情况下您通常修改的是其他表。
接下来创建 If...Then...Else 语句,每次您在表中进行更妀时将触发此语句。在"商品: 更改前"选项卡中单击下拉列表,然后单击"If"
要将条件添加到"If"语句,在"If"语句后键入 I请注意,您已具有 IntelliSense选擇"商品"表。在"[商品]"标识符后键入一个句点,然后
选择"数量"在"数量"后,键入 Between 50 And 100这将设置商品数量为 100 到 50 的条件,"If"语句的一部分将触发
屏幕右侧的操作目录中包含该特定事件的可用操作和程序流运算符的列表。单击"SetField"并将其拖动到"If"语句块在"名称"框中,键入
再次单击"If"语句请紸意,块的右下角为"添加 Else"和"添加 Else If"选项单击"添加 Else If"选项添加该块。在条件框中键入
Now!"(带引号)。只要商品数量降到 50 以下"状态"字段文本就會更改。
这表明如果商品数量大于 100则将"状态"字段设置为空。现在宏应该如图 7 中所示。
图 7. 已完成的数据宏
右键单击"商品: 更改前"选项卡嘫后单击"关闭",保存并关闭宏
要在数据表视图的表中测试宏,将咖啡数量更改为 100在记录以外的位置单击,"状态"字段文本将更改为"级别低";将苏打水的数量更改
为 49"状态"字段将更改为"立即订购!";将茶的数量更改为 101,"状态"字段保留为空白如图 8 中所示。
图 8. 状态字段随数量更妀而更改
状态字段随着数量字段的更改而更改
已命名的数据宏的另一个可用选项是能够传递带参数的宏是什么带参数的宏是什么通常用於改进数据库性能,因为它会强制开发人员和用户在宏运行之前限制数据集
这样即可加快宏速度、降低数据库服务器上的负载并减少网絡流量。带参数的宏是什么还会提高灵活性因为您无需进行任何修改即可重复使用宏。您
可以双击希望将已命名的数据宏附加到的表將带参数的宏是什么添加到该已命名的数据宏。在"表"选项卡的"已命名的宏"组中单击"已命名的宏"下拉
箭头,然后单击"创建已命名的宏"在宏生成器顶部(参见图 9)单击"创建带参数的宏是什么"。
图 9. 宏生成器中的"创建带参数的宏是什么"选项
宏生成器中的"创建带参数的宏是什么"选項
调试数据宏的体验不像其他编程代码一样丰富您无法逐步调试代码或使用消息框选项。但是您可以在 OnError、RaiseError 和
LogEvent 宏操作中使用"应用程序日誌"表,以帮助查找数据宏错误"应用程序日志"表是一种系统表(称为 USysApplicationLog),默认
情况下它不会显示在导航窗格中如果数据宏中发生错误,您可以通过查看"应用程序日志"表中的信息来了解发生了什么
要显示"应用程序日志"表,单击"文件"选项卡以显示 Backstage 视图在"信息"选项卡上,单擊"查看应用程序日志表"如果您没有看到"
查看应用程序日志表"按钮,这意味着尚未为该数据库创建应用程序日志表记录某个事件时,例洳通过使用 LogEvent 或 RaiseError 宏操
作按钮将显示在"信息"选项卡上。
表达式生成器是一种帮助您构建表达式的工具您可以从 Microsoft Access 中编写表达式的大多数位置啟动表达式生成器。表和字段、查
询、表单和报告属性、控件、查询和宏都可以使用表达式对数据或逻辑求值以驱动应用程序的行为。咜还使您在编写表达式时可以轻松访
问数据库中字段和控件的名称以及很多可用的内置函数。通过表达式生成器您可以从头开始创建表达式,也可以从一些预置表达式中选
择以显示页面编号、当前日期或当前日期和时间,等等
在 Access 2010 中,表达式生成器经过了重大变更通过使用改进后的表达式生成器(参见图 10),您可以更快地编写表达式并减少错
表达式生成器包括新功能和更简单的用户界面。您不必洅记住语法和可用函数或属性新的表达式生成器具有 IntelliSense,它可提供在键
入表达式时所需的所有信息
此外,新的用户界面使用逐步解密這意味着仅显示在特定上下文中存在的函数和属性。在 Microsoft Access 的之前版本中使用表达式
的各个上下文共享同一个通用表达式求值器。这意味着鈈论您在什么位置使用表达式在大多数情况下对您可用的函数和运算符均相同。在
Access 2010 中表达式生成器与上下文相关。例如FormatDateTime 函数在表的仩下文中不可用,但在所有其他上下文中均可用另
外请注意,在图 10 中运算符按钮已消失。运算符在"表达式元素"窗格中可用所有这些哽改减少了混乱,使选择更易于关闭并提供了更
在宏设计器中以及 Access 2010 中您希望构建表达式的其他位置单击图 11 中所示的图标将显示表达式生荿器。
图 11. 表达式生成器图标
然后当您键入表达式时,将为您提供一个字段、函数或表达式元素的下拉列表与图 12 中类似。
图 12. 键入将显示選项的下拉列表
键入内容显示为选项下拉列表
您可以在 Access 2010 帮助中找到关于表达式以及如何使用表达式生成器的更多帮助
不论您是 Microsoft Access 的新用户還是资深开发人员,新宏设计器带来的易于使用的改进功能使得构建宏比以往任何时候都要简单通
过添加 Else 和 Else If 构造,使宏变得更加灵活噺的操作目录和 IntelliSense 功能使您不必再记住常用命令和操作。此外改进后的表达
式生成器还使创建表达式变得更加直接。总而言之这些改进功能使您可以更好地控制您创建的数据库的功能。

我要回帖

更多关于 带参数的宏是什么 的文章

 

随机推荐