【发布时间】:2011-03-04 19:14:23
【问题描述】:
我想在 ms access 2007 数据库查询中声明和设置变量。我想将 2 个数据库查询结果存储在 2 个变量中,因为它们在执行后是整数或字符串类型。我想知道如何声明和设置变量?
SQL server 等价物是这样的
declare @var1 varchar(50)
set @var1 = 'select * from table'
【问题讨论】:
标签: ms-access
我想在 ms access 2007 数据库查询中声明和设置变量。我想将 2 个数据库查询结果存储在 2 个变量中,因为它们在执行后是整数或字符串类型。我想知道如何声明和设置变量?
SQL server 等价物是这样的
declare @var1 varchar(50)
set @var1 = 'select * from table'
【问题讨论】:
标签: ms-access
Jet/ACE SQL 不支持这种语法。根据您的最终目标,您需要使用 VBA(下面提供的示例)或子查询(如@Thomas 的解决方案)来实现此类功能。
大致如下(改编自Allen Browne's website):
Function DAORecordsetExample()
'Purpose: How to open a recordset and loop through the records.'
'Note: Requires a table named MyTable, with a field named MyField.'
Dim rs As DAO.Recordset
Dim strSql As String
strSql = "SELECT MyField FROM MyTable;"
Set rs = CurrentDb.OpenRecordset(strSql)
Do While Not rs.EOF
Debug.Print rs!MyField
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
End Function
【讨论】:
如果“在查询中”的意思是“不诉诸 VBA 例程”,那就更棘手了。最简单的解决方案是在主查询中使用单个查询。获取值的查询可能如下所示:
Select SomeCol As Var1
, ( Select SomeOtherCol
From SomeOtherTable ) As Var2
From SomeTable
以上假设子查询将返回单行,并且我们得到 Var1 的值的一行。如果不能保证,那么您可能希望使用保证返回一行的外部查询,如下所示:
Select (Select SomeCol
From SomeTable ) As Var1
, ( Select SomeOtherCol
From SomeOtherTable ) As Var2
From AnotherTableWithAtLeastOneRow
Where Col = "SomeValueToGetOneRow"
您可以将其保存为查询定义,然后在主查询中使用它。
【讨论】: