Formatar uma Data (Ano com 4 dígitos)

28 10 2010

O NAV mostra por defeito, num campo de data (por exemplo num report), o dia, mês e ano com 2 caracteres, mas se precisarmos que no ano mostre os 4 dígitos necessitamos de recorrer a esta função:

FORMAT(TODAY,0,'<Closing><Day,2>-<Month,2>-<Year4>')

Mais uma vez obrigado, GRANDE!





Utilizar o PADSTR

28 10 2010

Nestes dias, tive a necessidade de preencher caracteres a uma string. Queria importar registos em que o campo “Nº Cliente” do Excel vinha com um tamanho máx. de 2,3 caracteres. No entanto, na base de dados, os nºs de clientes tinham sempre 5 caracteres. Desta forma, pensei logo nesta solução:

CASE STRLEN(Cliente) OF
1: Cliente := '0000'+Cliente;
2: Cliente := '000'+Cliente;
3: Cliente := '00'+Cliente;
4: Cliente := '0'+Cliente;
5: Cliente := Cliente;
END;

Assim resolvi a questão. Dias mais tarde, em conversa com um colega ele confronto-me com esta pergunta:

“E se o nº for com 20 caracteres?”

Pronto, esta solução não é viável, porque tinha que criar muitas linhas de código. Então encontrei esta função no NAV, o PADSTR.

Assim estas linhas todas de código seriam subtituídas apenas por uma:
Cliente := PADSTR('00000',5-STRLEN(Cliente))+Cliente;

Obrigado, companheiro GRANDE!






Casas decimais em Text numa TextBox

24 02 2010

Se num Report, necessitarmos de incluir um texto numa TextBox que inclua um valor de um decimal, e pretendermos que esse decimal tenha sempre casas decimais, então:

Text001 – O valor da factura é %1 EUR.

Na propriedade SourceExpr da TextBox colocar:

STRSUBSTNO(Text001,FORMAT(Valor,0,’<SIGN><INTEGER THOUSAND><DECIMALS,3>’))

Então caso:

Valor = 5 EUR então Text001 – O valor da factura é 5,00 EUR.

Valor = 5,1 EUR então Text001 – O valor da factura é 5,10 EUR.

Valor = 5,102 EUR então Text001 – O valor da factura é 5,10 EUR.






Microsoft Dynamics NAV Roadmap

24 02 2010

Dynamics NAV Roadmap





Ordenar um Array

24 02 2010

Numa codeunit por exemplo colocar o seguinte código C/AL para ordenar um vector (array):

OnRun()
meuTexto[1] := 'N6543';
meuTexto[2] := 'A8264';
meuTexto[3] := 'V1983';
meuTexto[4] := 'I8709';
meuTexto[5] := 'T6154';
meuTexto[6] := 'U9061';
meuTexto[7] := 'G6519';
meuTexto[8] := 'A6532';


OrdenaArrayDeTexto(meuTexto);


FOR i := 1 TO ARRAYLEN(meuTexto) DO BEGIN
  IF meuTexto[i] '' THEN
    MESSAGE(meuTexto[i]);
END;

Função para ordenar o array de texto:

OrdenaArrayDeTexto(VAR ParamArray : ARRAY [999] OF Text[30])
COMPRESSARRAY(ParamArray);
FOR i := 1 TO ARRAYLEN(ParamArray) DO BEGIN
  IF ParamArray[i] = '' THEN
    Finish := i;
END;


REPEAT
  ToExit := TRUE;
  FOR i := 1 TO (Finish - 1) DO BEGIN
    IF ParamArray[i] > ParamArray[i + 1] THEN BEGIN
      Swap(ParamArray[i], ParamArray[i + 1]);
      ToExit := FALSE;
    END;
  END;
  Finish -= 1;
UNTIL ToExit;





Como abrir um form por defeito sem ID

24 02 2010

Sabia que em C/AL pode abrir o formulário por defeito de uma tabela sem que se saiba qual o ID desse FORM? Para isso é apenas necessário utilizar a função FORM.RUNMODAL (Number [, Record] [, Field]) sendo que só precisa de colocar o valor zero, em vez do nº do formulário, e em seguida o nome do variavel do registo da tabela.

Por exemplo:

Se usar a variável recProduto do tipo record e subtipo Item (Produto):

recProduto.SETFILTER("Gen. Prod. Posting Group", 'NACIONAL');
FORM.RUNMODAL(0,recProduto);





A História do Dynamics NAV

19 02 2010

Um powerpoint resumido com história do Dynamics NAV desde a sua origem até chegar à Microsoft.

Download








Seguir

Get every new post delivered to your Inbox.