Вы получаете это сообщение об ошибке, потому что это недопустимый Access SQL ...
DECLARE @yeardata smallint=2008
Вы можете объявить параметр в Access SQL следующим образом ...
PARAMETERS [@yeardata] Short;
... но это не позволяет вам присвоить значение параметру одновременно с его объявлением.
Если вы хотите загрузить результаты запроса в Recordset
объект, Вы можете сделать это с помощью DAO.QueryDef
, присвоить значение параметра и затем вызвать его метод OpenRecordset
.
Однако, если вы хотите открыть запрос непосредственно в Datasheet View, вы можете указать значение параметра используя DoCmd.SetParameter , а затем вызовите DoCmd.OpenQuery
, как в этом примере, из окна Immediate ...
DoCmd.SetParameter "@yeardata", 2008
DoCmd.OpenQuery "Query1"
Вот SQL для моей протестированной версии "Query1". ..
PARAMETERS [@yeardata] Short;
SELECT a.*
FROM all_tables AS a
WHERE (((a.notes) Is Null) AND ((Year([a].[date_created]))=[@yeardata]));