Автоматически создавать электронные письма только на понедельник - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть следующий фрагмент кода в моей функции загрузки. Проверка того, является ли дата понедельником, и если это так, то проверьте в log_EmailProductionSchedule, чтобы увидеть, зарегистрирована ли сегодняшняя дата. В противном случае приложение автоматически отправит электронное письмо и добавит в эту таблицу журнал с текущей датой, что не позволит приложению отправить другое электронное письмо. Тем не менее, каждый раз, когда я открываю приложение, создается электронное письмо и вставляется новый журнал. где я ошибся с этим кодом?

If Weekday(Now) = vbMonday Then
    If DCount("*", "log_EmailProductionSchedule", "[sentDate] = #" & Format(Now, "mm\/dd\/yyyy") & "#") = 0 Then
        'send email
        Call SendProductionEmail
        CurrentDb.Execute ("INSERT into log_EmailProductionSchedule (sentDate) select date()")
    End If
End If

1 Ответ

1 голос
/ 25 февраля 2020

Установить точку останова на DCount. Ваши переменные, вероятно, не установлены на то, что вы думаете.

Вместо этого, если возиться с Format, просто используйте функцию даты

If Weekday(Now) = vbMonday Then
    If DCount("*", "log_EmailProductionSchedule", "[sentDate] = Date()") = 0 Then
        'send email
        Call SendProductionEmail
        CurrentDb.Execute ("INSERT into log_EmailProductionSchedule (sentDate) select date()")
    End If
End If

нажмите здесь узнать об особенностях с VBA и SQL в MS Access. TL: DR; Jet, ядро ​​базы данных, которое запускает ваш SQL, использует региональные настройки вашего компьютера, но VBA имеет значение mm / dd / yyyy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...