2011-03-04 2 views
1

Я хочу объявить и установить переменные в запросе базы данных MS Access 2007. Я хочу сохранить 2 результата запроса базы данных в 2 переменных, поскольку после выполнения они являются целыми или строковыми. Я хочу знать, как я могу объявить и установить переменные?Как объявить и установить переменную в запросе ms access 2007

SQL сервер эквивалент будет что-то вроде этого

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

ответ

2

Там нет поддержки для этого синтаксиса в 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" 

Вы бы сохранить, что в определении запроса, а затем использовать его в основном запросе.

Смежные вопросы