openbd cfloop по дате

голоса
0

Я пытаюсь преобразовать свои сайты из CF8 в openBD. У меня есть cfloop в месте, что петли в диапазоне дат.

В сущности, я хочу, чтобы вставить новую запись в БД на каждые 2 недели (шаг) из диапазона дат (от и до)

мой цикл выглядит следующим образом ...

<cfloop 
  from  = #form.startDate# 
  to    = #form.endDate# 
  index = i 
  step  = #theStep#
>

Это отлично работает в CF8, в openBD, я получаю эту ошибку ... Данные не поддерживаются: значение [11/05/09] не является числом

Любые идеи произведения вокруг?

Спасибо

Задан 04/11/2008 в 19:54
источник пользователем
На других языках...                            


3 ответов

голоса
1

Ваша задача заключается в проверке не неоднозначные локало зависят от даты строк формы.

Более надежная версия будет такой:

<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>

Было бы полезно, чтобы ограничить человек ввода однозначных форматов даты в форму, как «гггг-мм-дд».

«Значение не является число» ошибка возникает из - за того , что петля еще идет над числами, даже если вы кормите его дату. Он использует числовое представление этих дат то, но они должны быть действительными и понятными для того , чтобы работать.

Ответил 05/11/2008 в 22:47
источник пользователем

голоса
0

Как говорит Бен, ваш код не существует - нужно использовать значок 101 010, чтобы создать блок кода для него.

Вот еще одно решение, которое должно работать:

<cfloop index="Current" from="#parseDateTime(StartDate)#" to="#parseDateTime(EndDate)#" step="14">
    [do stuff]
</cfloop>
Ответил 05/11/2008 в 00:03
источник пользователем

голоса
0

Я не могу видеть свой код, но вот мое первое предложение:

<cfset current = [your begin date]>
<cfloop condition = "datecompare(enddate, current)">
  [do stuff]
  <cfset current = dateadd('d', 14, current)>
</cfloop>

НТН.

Ответил 04/11/2008 в 21:07
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more