Я пытаюсь конвертировать свои сайты с CF8 на openBD. У меня есть cfloop на сайте, который зацикливается на диапазоне дат.
По сути, я хочу вставлять новую запись в базу данных каждые 2 недели (шаг) диапазона дат (от и до)
моя петля выглядит так ...
<cfloop
from = "#form.startDate#"
to = "#form.endDate#"
index = "i"
step = "#theStep#"
>
Это отлично работает в CF8, в openBD я получаю эту ошибку ... Данные не поддерживаются: значение [11/05/09] не является числом
Любые идеи работы?
Спасибо
Переформатировал код, чтобы он стал видимым.

Я не вижу ваш код, но вот мое первое предложение:
<cfset current = [your begin date]>
<cfloop condition = "datecompare(enddate, current)">
[do stuff]
<cfset current = dateadd('d', 14, current)>
</cfloop>
HTH.
Как говорит Бен, вашего кода там нет - вам нужно использовать значок 101010, чтобы создать для него блок кода.
Вот еще одно решение, которое должно работать:
<cfloop index = "Current" from = "#parseDateTime(StartDate)#" to = "#parseDateTime(EndDate)#" step = "14">
[do stuff]
</cfloop>
Я подозреваю, что это то, что он делает, но не могу сказать наверняка. Мне кажется, что такой зацикливание на дате - это то, что можно было не использовать в OpenBD. Но это всего лишь внутреннее ощущение, пока он не раскроет свой код.
Ваша проблема заключается в том, что вы не проверяете в FORM неоднозначные строки даты, зависящие от локали.
Более надежная версия была бы такой:
<cfset SetLocale("English (US)")> <!--- set expected input locale here --->
<cfif LSIsDate(form.startDate) and LSIsDate(form.endDate)>
<cfset theStep = 14>
<cfloop
from = "#LSParseDate(form.startDate)#"
to = "#LSParseDate(form.endDate)#"
index = "i"
step = "#theStep#"
>
<!--- do stuff --->
</cfloop>
<cfelse>
<!--- output some error message --->
</cfif>
Было бы полезно ограничить людей вводом в ФОРМУ однозначных форматов даты, например «гггг-мм-дд».
Ошибка «значение не является числом» возникает из-за того, что цикл по-прежнему перебирает числа, даже если вы скармливаете ему даты. Тогда он использует числовое представление этих дат, но они должны быть действительный и понятными, чтобы это работало.
Пожалуйста, поместите свой кодовый блок в ... мм ... кодовый блок. Таким образом, он будет отображаться правильно.