Criando SDTs

Neste post eu ensinarei como criar e atribuir valores para um SDT com 3 níveis e mostrar os dados contidos nele em uma Web Panel.

O níveis serão compostos por “Pai”, “Filhos” e “Netos”. Cada Neto ainda terá uma propriedade chamada “Brinquedo”.

Vamos começar criando a estrutura do SDT:

Pressionando as teclas Ctrl+N, será aberto um pop-up contendo os objetos que podem ser criados no Genexus. Escolherei o tipo de dados “Structure Data Type” e o chamarei de Pai.

Criação de SDT

A  estrutura terá o seguinte formato:

Pai:

  • idPai
  • nomePai
    • Filhos:
      • idFilho
      • nomeFIlho
      • Netos:
        • idNeto
        • nomeNeto
        • Brinquedo (Propriedade):
          • nomeBrinquedo

Para criar nível “Brinquedo” como uma propriedade, desmarcar a opção “Is Collection” conforme figura abaixo:

SDT Criado:

Irei utilizar uma Web Panel para exemplificar o uso do SDT.

Criação de SDT

Serão criadas três variáveis (Uma para cada nível do SDT) para a inserção dos dados.

Pai – Data Type: Pai

Criação de SDT

Filhos – Data Type: Pai.Filhos

Criação de SDT

Netos – Data Type: Pai.Filhos.Netos

Criação de SDT

A primeira coisa a se fazer quando se utiliza um SDT é estanciar a variável utilizando o comando new().

&Pai.idPai       = 1
&Pai.nomePai = 'Peter Park'

Os outros níveis seguem o mesmo critério do primeiro nível na atribuição de valores.

&Filhos                    = New()
&Filhos.idFilho        = 1
&Filhos.nomeFilho  = 'Hank Pym'

&Netos                    = New()
&Netos.idNeto        = 1
&Netos.nomeNeto  = 'Luke Cage'

O nível “Brinquedo” por ser uma propriedade, é atribuído dentro do nível Netos. (Uma propriedade no SDT é muito utilizada quando o SDT serve de base para a criação de um XML).

&Netos.Brinquedo.nomeBrinquedo = 'Moletom'

Para a gravação dos dados dos níveis do SDT, é necessário que seja feito de forma recursiva, sempre gravando todos os dados do último nível no nível anterior até chegar no primeiro nível.

&Filhos.Netos.Add(&Netos)
&Pai.Filhos.Add(&Filhos)

Desta forma o SDT irá conter os dados de um Pai, um Filho e um Neto.

Neste exemplo, irei adicionar alguns filhos e netos para uma melhor visualização na tela.

O código completo do evento start ficou conforme abaixo:

Event Start
	&Pai		= New()
	
	&Pai.idPai		= 1
	&Pai.nomePai	= 'Peter Park'
	
	&Filhos			= New()
	&Filhos.idFilho		= 1
	&Filhos.nomeFilho	= 'Hank Pym'
	
	&Netos			= New()
	&Netos.idNeto	= 1
	&Netos.nomeNeto	= 'Luke Cage'
	
	&Netos.Brinquedo.nomeBrinquedo = 'Moletom'
	
	&Filhos.Netos.Add(&Netos)
	
	&Netos			= New()
	&Netos.idNeto	= 2
	&Netos.nomeNeto	= 'Jessica Jones'
	
	&Netos.Brinquedo.nomeBrinquedo = 'Garrafa de Whisky'
	
	&Filhos.Netos.Add(&Netos)
	&Pai.Filhos.Add(&Filhos)
	
	&Filhos			= New()
	&Filhos.idFilho		= 2
	&Filhos.nomeFilho	= 'Steve Roger '
	
	&Netos			= New()
	&Netos.idNeto	= 1
	&Netos.nomeNeto	= 'Tony Stark'
	
	&Netos.Brinquedo.nomeBrinquedo = 'Mão Robótica'
	
	&Filhos.Netos.Add(&Netos)
	
	&Netos			= New()
	&Netos.idNeto	= 2
	&Netos.nomeNeto	= 'Stephen Strange'
	
	&Netos.Brinquedo.nomeBrinquedo = 'Capa Mágica'
	
	&Filhos.Netos.Add(&Netos)
	
	&Netos			= New()
	&Netos.idNeto	= 3
	&Netos.nomeNeto	= 'Daniel Rand'
	
	&Filhos.Netos.Add(&Netos)
	&Pai.Filhos.Add(&Filhos)
EndEvent

Para criar a estrutura do SDT na Web Panel, basta escolher a opção Attribute/Variable na Tool Box e arrastar para o local no layout que as informações do SDT serão exibidas.

Criação de SDT

Após arrastar, escolher a variável SDT.

Criação de SDT

E o layout será criados automaticamente contendo os atributos do nível principal no inicio e os níveis do SDT são convertidos em grids.

Criação de SDT

Quando executado, o resultado abaixo será exibido:

Neste primeiro post de SDT foi mostrado como criar e atribui valores a um SDT com vários níveis.

Nos próximos posts estarei mostrando como atualizar e deletar os dados de um SDT.

174 Views
2018-09-20T21:14:47-03:00 By |SDT|0 Comentários

Sobre o Autor:

Marcelo Santos

Deixar Um Comentário