У меня есть следующий код VBA для .mdb файла Access:Могу ли я использовать метод DoCmd в инструкции IF?
If DoCmd.RunSQL "SELECT DISTINCT Max(wk_ending_dt) FROM d2s_loader_performance" < (Date()-Weekday(Date())) Then
DoCmd.RunSQL "DELETE * FROM d2s_loader_performance_tbl WHERE wk_ending_dt = (Date()-Weekday(Date())-35)"
End If
Затем выдвигает на первый план следующий текст: "SELECT DISTINCT Max(wk_ending_dt) FROM d2s_loader_performance"
и выдает ошибку Compile Error: Expected Then or GoTo
.
Любые идеи? У меня есть a Then в конце моей условной проверки, и, насколько мне известно, двойные кавычки предназначены только для синтаксиса SQL. Я использую это условие If...Then
, чтобы разрешить удаление записи, если максимальная дата таблицы меньше даты окончания предыдущей недели.
Работает как шарм, хотя я не совсем понимаю логику rec (0). FWIW, '(Date() - Weekday (Date()) - 35)' также работал. Запустите это как оператор SELECT в Query Builder, и вы получите 12/28/13. Если VBA выполняет оба стиля одинаково, есть ли смысл использовать # vs, а не здесь? –
rec (0) - это первое поле (единственное поле в этом случае) в наборе записей. Поскольку ваш набор записей возвращает одно поле и одну запись, проще просто использовать rec (0) вместо rec («Max of wk_ending_dt»). re: символ #, в этом случае нет никакой пользы от использования одного над другим, поэтому используйте только то, что наиболее удобно. –