2013-04-19 4 views
1

у меня есть формула выбора вида:Выберите документы за последние 7 дней

Var :[email protected](@IsAvailable(ENVIADO); @If(ENVIADO != "Sim"; "Valido";"");"Valido"); 
SELECT (Form="Documento"&@Date(Notes_data)>@Date(2013;3;31)&Emissor!=""&DocApagado="Não"&Estado="Definitivo"&@IsUnavailable($Conflict)) & Var = "Valido" 

И я хочу, чтобы выбрать все документы из прошлого 7 days.excluding «сегодня».

ответ

1

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

НО, если у вас есть даты в вашей формуле выбора, здесь предлагается предложение (также это помогает форматировать формулу, чтобы сделать ее более читаемой). Я полагаю, что поле «Notes_data» относится к соответствующим областям .:

Var :[email protected](@IsAvailable(ENVIADO); @If(ENVIADO != "Sim"; "Valido";"");"Valido"); 
SELECT (
Form="Documento" & 
@Date(Notes_data) < @Today & 
@Date(Notes_data) > @Adjust(@Today(0;-8;0;0;0;0)) & 
Emissor!="" & 
DocApagado="Não" & 
Estado="Definitivo" & 
@IsUnavailable($Conflict) 
) & 
Var = "Valido" 

Но, как я уже говорил ранее. Пожалуйста, не делайте этого так.

+0

Привет! ТКС !! Да ... «notes_Data» - это соответствующее поле, но ... «Передача аргументов нефункции или @Function, которая не требует аргументов»; « – Hugo

+1

Нет, пожалуйста .. Неужели так не делай.Вы можете вызвать множество проблем с использованием связанных с датами \ @Functions в представлениях (\ @Today, \ @Tomorrow, \ @Now и т. Д.). –

+0

ok ... так ... как это сделать «фильтр» без функций? – Hugo

1

Мой подход к этому является использование @SetViewInfo ([SETVIEWFILTER], в событиях PostOpen и QueryClose в целях Чтобы сделать это, изменить формулу выбора на:.

Var := @If(@IsAvailable(ENVIADO); @If(ENVIADO != "Sim"; "Valido";"");"Valido"); 
SELECT (Form="Documento" & Emissor!="" & DocApagado="Não" & 
     Estado="Definitivo" & @IsUnavailable($Conflict)) & 
     Var = "Valido" 

Следующая добавить столбец . в начале представления, который сортируется и категоризированным Дайте ему эту формулу:

out := ""; 
@For(i:=1; i<7; i:=i+1; 
    wrkDt := @Adjust(Notes_Data; 0; 0; (i*-1); 0; 0;0); 
    tmp1 := @Text(@Year(@Date(wrkDt))) + 
     "-" + @Right("00" + @Text(@Month(wrkDt));2) + 
     "-" + @Right("00" + @Text(@Day(wrkDt));2); 
    out := @Trim(out : tmp1) 
); 
out 

Это приведет к каждому документу, которое будет отображаться на данную дату, указанной в семи категориях зрения на каждую дату вы бы как это выглядит.

Если это веб-приложение, вы можете использовать параметр RestrictToCategory для отображения только сегодняшних документов. Если это приложение клиента Notes, изменить событие PostOpen в View, чтобы запустить формулу код и установите его: целью

tmp1 := @Text(@Year(@Today)) + 
     "-" + @Right("00" + @Text(@Month(@Today));2) + 
     "-" + @Right("00" + @Text(@Day(@Today));2); 
@SetViewInfo([SetViewFilter]; tmp1); 

Теперь вы будете видеть только те документы на сегодняшний день, когда вы открываете вид. И он не будет постоянно нуждаться в обновлении.

ПРИМЕЧАНИЕ. Я использую этот текстовый формат, чтобы гарантировать, что он будет работать одинаково для любого формата отображения даты, даже если сервер и клиент используют разные форматы.

Одно предостережения ... The SetViewInfo остается в силе для всех представлений в текущей базе данных, так что вы должны добавить ко всем событиям PostOpen других взглядов, чем эта формула, которая очищает значение:

@SetViewInfo([SetViewFilter]; ""); 

Счастливые кодирования

/Newbs

0

дней: = (@ Сегодня - @created)/86400;

Он вернет количество дней с сегодняшнего дня и дату создания документа. Вы можете дать условие зависит от вашего требования.

+0

Ramkumar ... i put этот код в новом столбце справа? после этого ... как можно отфильтровать этот новый столбец? – Hugo

+0

Вы присоединяете этот код к своей формуле выбора вида. В приведенном выше коде дни будут возвращать количество дней с сегодняшнего дня и дату создания. используйте дни с ваших требований. – Ramkumar

+0

tks ramkumar !! | – Hugo

Смежные вопросы