精通MS-ACCESS SQL之基础篇(19)
时 间:2017-12-08 11:42:00
作 者:Big Young ID:252 城市:襄阳
摘 要: 用PARAMETERS命令实现ACCESS的参数查询。
正 文:
第十九节 用PARAMETERS命令实现ACCESS的参数查询
参数查询又叫参数化查询(Parameterized Query 或 Parameterized Statement)是指某些情况下,需要创建可以使用多次,但每次使用不同值的查询,就是在设计与数据库链接并访问数据的SQL语句时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这种理念就是“一次创建,多次运行”。例如,可能经常运行一个查询以查找某位学生的某次考试成绩,可以为每次请求运行相同的查询,只是每次使用的学生的学号或者姓名不同。参数是在运行查询时所提供值的占位符,运行时系统会弹出一个模式对话框,请求用户为参数输入值,用户不能退出具有这些特征的模式对话框。
一、参数查询的基本语法
PARAMETERS name datatype [, name datatype [, …]]
参数查询的PARAMETERS子句的组成部分说明:
项目 |
说明 |
Name |
参数的名字,用以设置数据库引擎的Parameter 对象的Name属性,在Parameters集合中标识一个Parameter对象。在程序运行查询时,此名字字符串将显示在对话框上。如果名字中有空格或标点符号应用方括号([])将其括起来,例如:[Low price] 和[Begin report with which month?]都是有效的参数名。 |
Datatype |
MS Access SQL的基本数据类型或数据类型的别名(同义词)。 |
我们可以在查询语句的Where或HAVING子句中使用不带数据类型说明符的参数名,下面我们看一个实际的参数查询例子,此例展示了带两个参数的SQL语句来实现对客户表的查询:
PARAMETERS [最低订数] Currency,
[开始日期] DateTime;
Select 客户ID, 购货量
FROM 客户
Where 购货量 > [最低订数]
AND 订购日期 >= [开始日期];
大家仔细揣摩一下这个示例,可以加深对参数查询的理解,下面我们再结合具体的查询实例来进一步领会参数查询的精粹。
二、在Select(选择)查询中使用参数
可以将参数用作文本值(文本值或数值)的占位符。最常见的是,参数经常在单个行或组的搜索条件中(即在SQL语句的Where或HAVING子句中)用作占位符,前面的示例也表明了这一点。下面我们打开“罗斯文商贸”示例数据库,创建一个对“员工”表的查询:
PARAMETERS [职务] CHAR;
Select ID, (姓氏 & 名字) AS 姓名
FROM 员工
Where 职务 = [职务];
执行此查询,产生如图19-1所示的对话框:
图19-1:运行带参数的选择查询的效果
我们现在在对话框的文本框中输入“销售代表”并点击“确定”按钮,会查询出如图19-2所示的效果:
图19-2:参数选择查询结果
这里列出的是命名的参数查询,其实还可以写成匿名的参数查询,就是省略PARAMETERS子句,在需要指定参数的地方用“?”,语句如下:
Select ID, (姓氏 & 名字) AS 姓名
FROM 员工
Where 职务 = ?;
运行后如图19-3所示:
图19-3:匿名参数查询示例
查询的效果与命名参数查询是一样的,在此就不多说什么了。
三、在Delete(删除)查询中使用参数
我们上面讲的例子都是在选择查询中使用参数,其实ACCESS的参数查询还可以用在其它类型的查询中,下面我来看一看Delete(删除)查询中的应用。
比如当员工离职时,我们要从“员工”表中把相应的员工的记录删除,这时我们也可以创建一个参数查询来使删除工作模式化,减少重复劳动。我们可以在“SQL视图”中输入如下SQL语句:
Delete *
FROM 员工
Where (姓氏 & 名字) = [请输入员工姓名];
运行后如图19-4:
图19-4:带参数的删除查询
或者:
PARAMETERS [姓名] CHAR;
Delete *
FROM 员工
Where (姓氏 & 名字) = [姓名];
执行的效果是一样,都会删除在此对话框输入的姓名的员工的信息记录。
四、在Update(更新)查询中使用参数
我们在更新查询中也同样可以使用参数,创建一个参数更新查询。如,当一个员工从一个城市调到另一个城市的时候,我们要把符合查询条件的员工的城市字段更新。参数在这个例子里有更大的用处,不仅仅是作为筛选的条件,还可以用于动态的赋予新的城市名。
我们在“SQL视图”中输入如下SQL语句:
PARAMETERS [姓名] Text (4), [城市] Text ( 20 );
Update 员工
SET 城市 = [城市]
Where (姓氏 & 名字) = [姓名];
由于前面已给出了多个示例图,这里为了减小篇幅就不再上图了,大家可以自己测试看看效果。
这里需要提醒一点,加上PARAMETERS声明,是为了让[姓名]对话框先出现,这样比较符合操作思路,先找出需要对其数据记录进行更新的人,再把城市设为新的值。如果不显式声明,Update语句中的SET子句出现在Where子句前,虽然不影响运行结果,参数只是用值替代,但用起来不符合习惯。
从上面的例子中我们可以得出结论:一是参数基本上只能用在条件筛选的子句中;二是参数可以是命名的,也可以是匿名的;三是参数可以在各种查询中使用。
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 通过命令按钮让Access列表...(04.24)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)

学习心得
最新文章
- 仓库管理实战课程(15)-月度库存...(04.30)
- Access选择打印机、横纵向、纸...(04.29)
- 仓库管理实战课程(14)-出库功能...(04.26)
- 通过命令按钮让Access列表框指...(04.24)
- 仓库管理实战课程(13)-入库功能...(04.21)
- Access控件美化之--美化按钮...(04.19)
- Access多行文本按指定字符筛选...(04.18)
- Microsoft Access数...(04.18)
- 仓库管理实战课程(12)-月度结存...(04.16)
- 仓库管理实战课程(11)-人性化操...(04.15)