Formatar máscara no Reports dinâmicamente

É possível formatar o número de casas decimais de um campo no Oracle Reports dinâmicamente. Um exemplo de uso deste recurso é quando o usuário deseja escolher a precisão das informações.

1. Passo – Criar uma Procedure no Reports

Procedure Config_Format ( P_Format IN NUMBER) is
Begin
  Srw.Attr.Mask :=  Srw.ForMatMask_Attr;
  If    P_Format = 0  Then Srw.Attr.ForMatMask  := '-NNNGNNNGNNNGNN0';
  ElsIf P_Format = 1  Then Srw.Attr.ForMatMask  := '-NNNGNNNGNNNGNN0D0';
  ElsIf P_Format = 3  Then Srw.Attr.ForMatMask  := '-NNGNNNGNNNGNN0D000';
  Elsif P_Format = 4  Then Srw.Attr.ForMatMask  := '-NGNNNGNNNGNN0D0000';
  ElsIf P_Format = 5  Then Srw.Attr.ForMatMask  := '-NNNGNNNGNN0D00000';
  ElsIf P_Format = 6  Then Srw.Attr.ForMatMask  := '-NNGNNNGNN0D000000';
  ElsIf P_Format = 7  Then Srw.Attr.ForMatMask  := '-NGNNNGNN0D0000000';
  Else Srw.Attr.ForMatMask  :=  '-NNNGNNNGNNNGNN0D00';
  End If;
  Srw.Set_Attr(0,Srw.Attr);
End;

2. Passo – Criar uma Trigger no Campo a ser alterado o Formato

  --Incluir a linha abaixo antes do Return(True)
  Config_Format( 4 );  --número de decimais 

Comentários aqui

Comments are closed.