Если конца нет, но начало и длина в порядке, вычисленная дата отображается
Вы уверены в этом? Когда я пытаюсь выполнить запрос со значениями для начала и длины, но без значения для конца, я получаю значение 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;