× Linguagem de Programação ADVPL

Perguntas Inicializador Padrão utilizando execblock

Mais
11 anos 3 meses atrás - 11 anos 3 meses atrás #9936 por Rstrozi
Boa noite pessoal,

Criei um campo na tabela SC5 do tipo data para preencher com a data do dia +1. Se eu colocar no inicializador padrão do campo Date()+1, funciona belezinha, o problema é que preciso que quando a data de digitação cair numa sexta, acrescentar 3 dias, para cair na segunda.

Fiz o seguinte execblock:
User Function NWPRENT()

	Local cDiaSemana	:= CDOW(Date())
	Local lSexta		:= IIf(cDiaSemana $ "Friday",.T.,.F.)
	Local dPrev		:= Date()+1

	If lSexta
		dPrev	:= Date()+3
	EndIf
	
	
	
Return dPrev

e o chamei no inicializador padrao U_NWPRENT

Na hora que vou incluir o pedido, dá erro no inicializador padrão.

Alguém poderia me dar uma luz?
Ultima edição: 11 anos 3 meses atrás por Rstrozi. Razão: erro digitação

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 3 meses atrás #9942 por kanaamlrr
Você está chamando como no seu inicializador?

U_NWPRENT() ou U_NWPRENT?

O correto é a 1ª forma.

Você pode colocar a fórmula abaixo no seu inicializador que também deve funcionar.

Day()+IIF(CDOW(Date()) $ "Friday",3,1)

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 3 meses atrás #9951 por Rstrozi
Acho que testei das duas formas. Vou tentar da forma que você sugeriu. Obrigado!

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 3 meses atrás #9952 por kanaamlrr
Desculpe, vi que digitei errado a fórumla.

Segue:

Date()+IIF(CDOW(Date()) $ "Friday",3,1)

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 3 meses atrás #9956 por lalberto
Conselho:

Substitua CDow(Date())

por Dow(Date)

Assim ao invés da descrição que poderá mudar conforme a linguagem no servidor, vc
utiliza o número 5 que corresponde à Sexta Feira.

Date()+IIF(DOW(Date()) == 5,3,1)

Abraços.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 3 meses atrás #10044 por Rstrozi
Boa noite Luiz e Kanaãm. Ficou show de bola com as dicas de vocês, funcionando direitinho... Só um detalhe: ao invés de 5, tive que usar 6.

Achei isso:

DOW()

Função que converte uma data para o valor numérico que representa o dia da semana. Útil quando se deseja fazer cálculos semanais. DOW() é similar a CDOW(), que retorna o dia da semana como uma cadeia de caracteres.

Sintaxe: DOW( dData )

Parâmetros:

dData Data que será convertida.

Retorno:

nDia Retorna um número entre zero e sete, representando o dia da semana. O primeiro dia da semana é 1 (Domingo) e o último é 7 (Sábado). Se a data for vazia ou inválida, DOW() retorna zero.


fonte: advplbrasil.com.br/advpl/manipulacao-de-data-e-hora/


Valeu ae pessoal!!!

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.128 segundos
Joomla templates by a4joomla