У меня есть отчет Access, в котором Record Source
ссылается на пару полей в форме.Работает нормально.Вот и все, за исключением набора полей в предложении SELECT
для простоты:
SELECT
pt.PA,
pt.SpfCode
FROM
PtHead AS pt
LEFT JOIN tblProblems AS p ON pt.PA = p.PantagNo
WHERE
pt.PA = [Forms]![fdlgQualityHistory]![PA] AND
p.ComplaintDate >= [Forms]![fdlgQualityHistory]![StartDate];
Я хочу обновить этот отчет, чтобы он отображал только самые последние записи.Это прекрасно работает:
SELECT TOP 20 -- NEW PART
pt.PA,
pt.SpfCode
FROM
PtHead AS pt
LEFT JOIN tblProblems AS p ON pt.PA = p.PantagNo
WHERE
pt.PA = [Forms]![fdlgQualityHistory]![PA] AND
p.ComplaintDate >= [Forms]![fdlgQualityHistory]![StartDate]
ORDER BY p.ComplaintDate DESC; -- NEW PART
Однако я не хочу, чтобы он был жестко запрограммирован на TOP 20
.Я хочу, чтобы это было TOP x
, основываясь на другом поле в той же форме.Ошибка:
SELECT TOP [Forms]![fdlgQualityHistory]![MaxProblems] -- FAILS HERE
pt.PA,
pt.SpfCode
FROM
PtHead AS pt
LEFT JOIN tblProblems AS p ON pt.PA = p.PantagNo
WHERE
pt.PA = [Forms]![fdlgQualityHistory]![PA] AND
p.ComplaintDate >= [Forms]![fdlgQualityHistory]![StartDate]
ORDER BY p.ComplaintDate DESC;
Ошибка:
Оператор SELECT содержит зарезервированное слово или имя аргумента с ошибкой или отсутствием, или пунктуация неверна.
Могу ли я изменить синтаксис, чтобы это работало?Если нет, что я могу сделать?Нужно ли перезаписывать весь текст запроса каждый раз, когда отчет запускается через VBA?