Переключатель вызывает #error, почему и как я могу это исправить - PullRequest
1 голос
/ 12 мая 2010

В моей таблице 3 поля: начало, конец (даты) и длина (число, может быть пустым).
Моя цель - рассчитать дату окончания, используя начало и длину, где конец не существует ...

У меня есть:

SELECT Switch((g.length<>0) And IsDate(g.end),DateAdd("m",g.length,g.start)) AS field FROM table g

Если нет начала, конца или длины, Access отображает пустым - это нормально. Если нет конца, но начало и длина в порядке, вычисленная дата показывается - снова хорошо. НО Если нет конца или длины, но начало существует, доступ отображает # Ошибка

Я не понимаю почему и не могу это исправить, пожалуйста, помогите!

1 Ответ

0 голосов
/ 12 мая 2010

Если конца нет, но начало и длина в порядке, вычисленная дата отображается

Вы уверены в этом? Когда я пытаюсь выполнить запрос со значениями для начала и длины, но без значения для конца, я получаю значение Null для «поля».

Кроме того, вы вызываете функцию DateAdd, когда это условие истинно:

g.length<>0) And IsDate(g.end)

Для того чтобы это условие было True, g.end должен был бы уже содержать действительную дату ... но я думал, что вы не хотите выполнить вычисление, когда у вас уже есть значение для конца Я в замешательстве.

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

SELECT
    d.start,
    d.end,
    d.length,
    IIf(IsDate(d.end), d.end,
    IIf(Nz(d.length)>0, DateAdd("m", d.length, d.start), Null)) AS field
FROM table AS d;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...