Access 的参数查询(Parameter Query) (一)

Access 的参数查询是个很有用(也很强大)的功能,可以省得我们一次次修改查询的准则。 

我们在做查询时,往往会加上一些准则(criteria),缩小查询返回的结果。经常的情况是,我们用来做准则的字段是一样的,只是每次赋予不同的值。

比如要查询员工的销售业绩,这次要查“张三”的,我们就到“设计视图”里把 Employee_Name 字段的准则设为“张三”;下次要查“李四”了,又要到“设计视图”里把 Employee_Name 字段的准则改为“李四”。公司里有几十个销售员工的话,每个人查过来,改得你烦也烦死了。

像上面这种情况,查询模式是一样的,只是每次准则的具体值不一样。Access 提供的参数查询功能可以帮助我们节省时间,不用一次次进入“设计视图”去修改 Criteria 的内容了。当你运行参数查询时,Access 会跳出一个标题是“Enter Parameter Value”的对话框,让你输入要查询的值。比如,要查“张三”的时候,就在对话框里输入“张三”,要查“李四”的时候,就输入“李四”。我们可以反复运行这个查询而不用去修改它的设计。

这种理念就是“一次创建,多次运行”(create it once, use it often),听上去像Java 的广告词“一次编写,到处运行”(Write Once, Run Anywhere)。

参数查询非参数查询(这是我自己创造的名词)的不同就在于,非参数查询是在设计时就赋值了(design-time binding),而参数查询是在运行时(run-time binding)赋值给准则表达式。

下面讲一下如何创建参数查询,以及一些使用技巧。

微软有一个教你如何创建参数查询的教程,很细节,可以看一下:
Queries III: Create parameter queries that prompt users for input

有了这个教程,我就不再重复一遍具体的创建步骤了,我这里更深入讲一下参数查询的本质。

我们在例子里看到,把要显示给用户看的提示文本用方括号([ ])括起来,放在“设计视图”相应字段的Criteria 行,就构成参数查询了。比如 [Enter Start date],[Enter the region to search for]。但是,我们由此得出结论,[ ] 是创建参数查询的关键词,这种说法对吗?其实这种观念是不对的。

方括号([ ])的真正意义是把变量名括起来,包括字段变量名和参数变量名;特别是带空格的变量名一定要用[ ] 括起来。

比如 Employee 表有个字段叫“First Name”,我们的查询语句如果写成 select First Name from Employee,Access 就会报语法错误。我们必须写成 select [First Name] from Employee。

所以,我们在例子中输入的[Enter Start date],实际上是隐性定义了一个变量名“Enter Start date”,因为这个变量名中间有空格,我们必须用方括号把它括起来。

我们可以测试一下不加[ ] 的效果,我们切换到“SQL 视图”下,输入 SELECT  *
FROM Employee WHERE city= EnterCityName。保存并运行这个查询,会跳出一个对话框,提示文本是“EnterCityName”,输入一个城市后,查询结果集只限于这个城市。

不过去掉[ ] 只能在“SQL 视图”下操作,因为在“设计视图”下,当你去掉[ ] 的时候,Access 会自动在变量名上加双引号(" "),把变量名变成字符串了。我们在“SQL 视图”下写好的SQL 语句,切换到“设计视图”下看,Access 也会自动帮你加上[ ]。

同样道理,有了[ ] 就一定是参数查询吗?也不一定的。[ ] 里的变量名不能和既有字段名重名,如果[ ] 里的变量名和已有字段名重名,这个查询就不是参数查询了。

比如Employee 表有个字段是“City”,我们在“设计视图”City 字段的Criteria 行输入 [City],运行这个查询时就不会跳出对话框。

参数查询的本质其实就是定义了一个变量,把非参数查询写死的Criteria 变成参数化的准则了。大多数情况下,我们是隐性定义了这个变量,当Access 看到不是表名,字段名,保留字符的新名字时,它就当这个新名字是参数查询的变量名了。我们也可以用Parameters 关键词显式声明参数查询的变量名,比如:

Parameters [Enter Employee Name] text ;
select * from Employee where employee_name=[Enter Employee Name] ;

下面一篇文章接着讲参数查询的使用技巧。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值