【问题标题】:How to declare and set variable in ms access 2007 query如何在 ms access 2007 查询中声明和设置变量
【发布时间】:2011-03-04 19:14:23
【问题描述】:

我想在 ms access 2007 数据库查询中声明和设置变量。我想将 2 个数据库查询结果存储在 2 个变量中,因为它们在执行后是整数或字符串类型。我想知道如何声明和设置变量?

SQL server 等价物是这样的

declare @var1 varchar(50)
set @var1 = 'select * from table'

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

      如果“在查询中”的意思是“不诉诸 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"
      

      您可以将其保存为查询定义,然后在主查询中使用它。

      【讨论】:

        猜你喜欢
        • 2011-08-31
        • 1970-01-01
        • 1970-01-01
        • 2019-02-02
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        相关资源
        最近更新 更多