2013-06-07 1 views
0

Я работаю с MS Access 2007.

У меня есть таблица с именем [tblDonors] связан с дочерними записями в таблице называется [tblReceipts].
Я пытаюсь установить значение нового поля Boolean (y/n) [tblDonors].[blInactive]. . Я хотел бы запустить скрипт, который проходит через каждую запись в [tblDonors] и установите [blInactive] поле для "True" если последний год поступления ([tblReceipts].[Date]) старше года (now())-2

Вот мой запрос:Настройки родительской запись значение поля на основе максимального значения поля Детского рекорда

ВЫБОР tblDonors.ID, Год ([tblReceipts]. [Дата]) AS [Год], tblDonors.Active
ОТ tblDonors
LEFT JOIN tblReceipts НА tblDonors.ID = tblReceipts.ID
ГДЕ (((Год ([tblReceipts]. [Дата]))> = Год (сейчас()) - 2))
ORDER BY Donors.ID;

Этот запрос показывает родительскую запись несколько раз, если донор пожертвовал более одного раза в течение последних двух лет, что создает дубликаты записей в отчете.
Как я могу пройти через каждую запись этого запроса, чтобы установить tblDonors.Active в TRUE, используя VBA? Следующие помогают продемонстрировать суть того, что я пытаюсь выполнить.

Function fnActivity()      'locates active donors 

     For each record in recordset   'Go through each record in the query... 
      record.[Active].Value = True  '...and flag as active member. 
     Next record 

    End Function 

ответ

1

Мне кажется, что вы могли бы добиться этого с помощью параметра [blInactive], чтобы Yes для всех ...

UPDATE tblDonors SET blInactive = Yes 

... а затем обновить существующие доноры, как это:

UPDATE tblDonors SET blInactive = No 
WHERE ID IN 
    (
     SELECT ID FROM tblReceipts 
     WHERE Year([tblReceipts].[Date]) >= (Year(Now()) - 2) 
    ) 
+0

Это сделало очарование. Спасибо, что помогли решить проблему, вызвавшую большую досаду. –

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