Existem duas formas de trabalhar com Report, utilizando uma DataWindow comum e acrescentar um objeto Report, denominada de DataWindow Nested. A segunda opção é criar uma DataWindow Composite e adicionar os Reports.
No Primeiro caso, a DataWindow principal possui dados e para cada registro existente, ele executára as Reports.
No Segundo caso, a DataWindow principal não possui dados, recuperando os reports apenas uma vez.
A dúvida que existe entre muitos desenvolvedores é como devemos proceder para buscar valores (GetItem) em uma coluna que está dentro de um Report.
Abaixo está a solução para os dois casos:
1) Report em DataWindow Composite
Este é o caso mais simples e possui duas soluções.
A primeira solução é realizar um GetChild do Report e fazer um comando GetItem ou Object tradicional, por exemplo:
datawindowchild vldwc_aux
dw_1.getchild('dw_1',vldwc_aux)
messagebox('teste',vldwc_aux.getitemstring( 1, 'sistema'))
messagebox('teste',vldwc_aux.getitemstring( 2, 'sistema'))
A segunda solução é baseado na estrutura de objetos do PowerBuilder, ou seja, você pode utilizar o OBJECT para buscar o valor, como no exemplo abaixo:
string vlsteste
//Syntax :
vlsteste = string(dw_1.object.dw_1[1].object.sistema.primary[1])
messagebox('teste2',vlsteste)
Existem alguns variações do comando acima, que também funcionam no PowerBuilder.
2) Report em DataWindow Nested
Neste caso, a única solução é usar o OBJECT para busca o valor, como no exemplo abaixo:
//Syntax :
vlsteste = string(dw_1.object.dw_1[1].object.sistema.primary[1])
messagebox('teste2',vlsteste)
Um comentário:
Olá Thiago como vai?
já usei este processo outras vezes mas me deparei com um outro problema e tenho duas dúvidas:
1 - qual a necessidade de usar o primary no fim do comando
vlsteste = string(dw_1.object.dw_1[1].object.sistema.primary[1])
2 - é possível inserir valores na report dessa mesma forma?
muito obrigado e parabéns pelo post. aguardo sua resposta
Postar um comentário