全面掌握MS ACCESS SQL(44)
时 间:2018-01-25 16:20:18
作 者:Big Young ID:252 城市:襄阳
摘 要: 用PARAMETERS声明参数查询的完整语法。
正 文:
第十四章 用PARAMETERS声明参数查询
参数查询是指某些情况下,需要创建可以使用多次,但每次使用不同值的查询。参数,也叫参变量,是一个变量。查询参数是指使用函数或方法进行查询操作时,函数或方法要使用的参数。一般进行查询操作时,查询参数不同,查询返回结果是不同,即参数决定了查询结果。查询参数使用最多地方是在数据库系统中。
第一节 用PARAMETERS声明参数查询的完整语法
一、PARAMETERS声明的完整语法
在ACCESS SQL中,用PARAMETERS来声明参数查询,其完整的语法如下:
PARAMETERS name datatype [, name datatype [, ...]]
PARAMETERS声明包含以下部分:
部分 |
说明 |
name |
参数的名称。该名称被赋给 Parameter 对象的 Name 属性,并且用来在 Parameters 集合中标识该参数。可以将 name 作为应用程序运行查询时在对话框中显示的字符串。请用方括号 ([ ]) 将包含空格或标点的文本括起来。例如,[Low price] 和 [Begin report with which month?] 都是有效的 name 参数。 |
datatype |
主要 Microsoft Access SQL 数据类型或其同义词之一。 |
二、几点注解说明
对于定期运行的查询,可以通过PARAMETERS声明来创建一个参数查询。参数查询能够自动处理查询条件更改。若使用参数查询,在每次查询运行时代码都需要提供参数。
PARAMETERS声明是可选的,但如果包含它,应将它置于任何其他语句(包括Select语句)之前。
如果声明包含了多个参数,请用逗号分隔它们。以下的示例里包含了两个参数:
PARAMETERS [Low price] Currency, [Beginning date] DateTime;
在Where或HAVING子句中可以使用name参数,不能使用datatype参数。以下的示例中要求提供两个参数,然后将该条件应用于Orders表的记录中:
PARAMETERS [Low price] Currency,
[Beginning date] DateTime;
Select orderID, orderAmount
FROM orders
Where orderAmount > [Low price]
AND orderDate >= [Beginning date];
三、VBA编程示例
本示例要求用户提供职务,然后使用该职务作为查询条件。
本示例调用 EnumFields 过程,您可以在 Select 语句示例中找到该过程。
Sub ParametersX()
Dim dbs As Database, qdf As QueryDef
Dim rst As Recordset
Dim strSql As String, strParm As String
Dim strMessage As String
Dim intCommand As Integer
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("NorthWind.mdb")
' Define the parameters clause.
strParm = "PARAMETERS [Employee Title] CHAR; "
' Define an SQL statement with the parameters
' clause.
strSql = strParm & "Select LastName, FirstName, " _
& "EmployeeID " _
& "FROM Employees " _
& "Where Title =[Employee Title];"
' Create a QueryDef object based on the
' SQL statement.
Set qdf = dbs.CreateQueryDef _
("Find Employees", strSql)
Do While True
strMessage = "Find Employees by Job " _
& "title:" & Chr(13) _
& " Choose Job Title:" & Chr(13) _
& " 1 - Sales Manager" & Chr(13) _
& " 2 - Sales Representative" & Chr(13) _
& " 3 - Inside Sales Coordinator"
intCommand = Val(InputBox(strMessage))
Select Case intCommand
Case 1
qdf("Employee Title") = _
"Sales Manager"
Case 2
qdf("Employee Title") = _
"Sales Representative"
Case 3
qdf("Employee Title") = _
"Inside Sales Coordinator"
Case Else
Exit Do
End Select
' Create a temporary snapshot-type Recordset.
Set rst = qdf.OpenRecordset(dbOpenSnapshot)
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print the contents of the
' Recordset. Pass the Recordset object and desired
' field width.
EnumFields rst, 12
Loop
' Delete the QueryDef because this is a
' demonstration.
dbs.QueryDefs.Delete "Find Employees"
dbs.Close
End Sub
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access判断多条明细的配方或订...(11.30)
- 如何让后台数据库在局域网共享时,且...(11.29)
- 【Access月初月末日期设置方法...(11.29)
- 【Access IIF函数嵌套示例...(11.26)
- Access快速开发平台--使用组...(11.25)
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)