Página 1 de 1

Problemas com Browse Array

Enviado: 04 Out 2011 12:03
por jelias
Bom dia Amiguinhos,

Estou com um problema em um sistema que estou fazendo para demonstrar dados de vendas.
Pego todo o conteúdo dos arquivos de dados e passa para uma array que posteriormente é mostrado em um browse. Entretanto, está ocorrendo o seguinte, só mostra o último conteúdo da última array.
Exemplo:
oDados=ASORT(vDados,,, {|x,y| x[4] < y[4]} ) - Aqui estou colocando em ordem de datas. Mostrando somente este dados fuciona blz. Ai pensei, vamos melhorar as informações e crei
cDados=ASORT(vDados,,, {|x,y| x[6] < y[6]} ) - Aqui estou colocando em ordem alfabética de cliente. Fiz outro browse para mostrar este conteúdo, como podem ver no fonte abaixo. Mais a partir do momento que eu executo outro ASORT, o conteúdo da variável oDados também muda, passar ser igual o conteúdo da variável cDados. Não estou entendendo o porque.
Fiz um @ get para mostrar o conteúdo das variáveis antes de montar o browse, e para minha surpreza só de executar o segundo ASORT já muda o conteúdo.

Código: Selecionar todos

oDados=ASORT(vDados,,, {|x,y| x[4] < y[4] } )
cDados=ASORT(vDados,,, {|a,c| a[6] < c[6] } )
iDados=ASORT(vDados,,,{|x,y| x[7] < y[7] } )
oItens=ASORT(vItens,,, {|x,y| x[3] > y[3] } )


PREPARE FONT oFont NAME "Arial" WIDTH 0 HEIGHT -12 WEIGHT 400
INIT DIALOG oDlg TITLE "Form1" ;
	    AT 0,130 SIZE 1098,718 NOEXIT  ;
	    STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER
	    Thisform := oDlg

@ 5,0 GROUPBOX oGroup2 CAPTION ""  SIZE 1087,88 ;
      STYLE BS_LEFT
@ 27,25  SAY oLabel1 CAPTION "RCA"      SIZE 80,21
@ 13,55  SAY oLabel2 CAPTION "Período"  SIZE 80,21
@ 186,55 SAY oLabel3 CAPTION "Ate"      SIZE 80,21
@ 89,19  GET oCodigo VAR vCodigo PICTURE "999" SIZE 46,24  STYLE WS_DISABLED
@ 155,19 GET oNome   VAR vNome		       SIZE 578,24 STYLE WS_DISABLED
@ 89,53  GET DATEPICKER oDat1 VAR vDat1 SIZE 98,24 STYLE WS_DISABLED
@ 232,53 GET DATEPICKER oDat2 VAR vDat2 SIZE 98,24 STYLE WS_DISABLED

@ 2,94 TAB oPage1 ITEMS {} SIZE 1089,616 ;
		  STYLE 0 +1;
		  FONT oFont

		  BEGIN PAGE 'Venda/Emissao' OF oPage1
		  @ 3,31 BROWSE oBrowse1 ARRAY SIZE 1075,492 ;
		  FONT oFont;
		  OF oPage1;
		  STYLE  WS_VSCROLL + WS_HSCROLL MULTISELECT

		  oBrowse1:aArray := oDados
		  CREATEARLIST(oBrowse1, oDados)

		  oBrowse1:aColumns[1]:heading:="*"
		  oBrowse1:aColumns[2]:heading:="Nota Fiscal"
		  oBrowse1:aColumns[3]:heading:="Serie"
		  oBrowse1:aColumns[4]:heading:="Emissao"
		  oBrowse1:aColumns[5]:heading:="Cliente"
		  oBrowse1:aColumns[6]:heading:="Nome Cliente"
		  oBrowse1:aColumns[7]:heading:="Cidade"
		  oBrowse1:aColumns[8]:heading:="Valor Produtos"
		  oBrowse1:aColumns[9]:heading:="Valor Total"

		  oBrowse1:aColumns[8]:picture:="@R 99,999,999.99"
		  oBrowse1:acolumns[9]:picture:="@R 99,999,999.99"

		  oBrowse1:aColumns[8]:nJuslin:=DT_RIGHT
		  oBrowse1:acolumns[9]:nJuslin:=DT_RIGHT


		  END PAGE OF oPage1

		  BEGIN PAGE 'Vendas/Cliente' OF oPage1
		  @ 3,31 BROWSE oBrowse3 ARRAY SIZE 1075,492 ;
		  FONT oFont;
		  OF oPage1;
		  STYLE  WS_VSCROLL + WS_HSCROLL MULTISELECT

		  oBrowse3:aArray := cDados )
		  CREATEARLIST(oBrowse3, cDados ) )

		  oBrowse3:aColumns[1]:heading:="*"
		  oBrowse3:aColumns[2]:heading:="Nota Fiscal"
		  oBrowse3:aColumns[3]:heading:="Serie"
		  oBrowse3:aColumns[4]:heading:="Emissao"
		  oBrowse3:aColumns[5]:heading:="Cliente"
		  oBrowse3:aColumns[6]:heading:="Nome Cliente"
		  oBrowse3:aColumns[7]:heading:="Cidade"
		  oBrowse3:aColumns[8]:heading:="Valor Produtos"
		  oBrowse3:aColumns[9]:heading:="Valor Total"

		  oBrowse3:aColumns[8]:picture:="@R 99,999,999.99"
		  oBrowse3:acolumns[9]:picture:="@R 99,999,999.99"

		  oBrowse3:aColumns[8]:nJuslin:=DT_RIGHT
		  oBrowse3:acolumns[9]:nJuslin:=DT_RIGHT

		  END PAGE OF oPage1

		  BEGIN PAGE 'Vendas/Cidade' OF oPage1
		  @ 3,31 BROWSE oBrowse4 ARRAY SIZE 1075,492 ;
		  FONT oFont;
		  STYLE  WS_VSCROLL + WS_HSCROLL MULTISELECT

		  oBrowse4:aArray := iDados
		  CREATEARLIST(oBrowse4, iDados)

		  oBrowse4:aColumns[1]:heading:="*"
		  oBrowse4:aColumns[2]:heading:="Nota Fiscal"
		  oBrowse4:aColumns[3]:heading:="Serie"
		  oBrowse4:aColumns[4]:heading:="Emissao"
		  oBrowse4:aColumns[5]:heading:="Cliente"
		  oBrowse4:aColumns[6]:heading:="Nome Cliente"
		  oBrowse4:aColumns[7]:heading:="Cidade"
		  oBrowse4:aColumns[8]:heading:="Valor Produtos"
		  oBrowse4:aColumns[9]:heading:="Valor Total"

		  oBrowse4:aColumns[8]:picture:="@R 99,999,999.99"
		  oBrowse4:acolumns[9]:picture:="@R 99,999,999.99"

		  oBrowse4:aColumns[8]:nJuslin:=DT_RIGHT
		  oBrowse4:acolumns[9]:nJuslin:=DT_RIGHT
		  END PAGE OF oPage1


		  BEGIN PAGE 'Resumo Produtos' OF oPage1

		  @ 3,31 BROWSE oBrowse2 ARRAY SIZE 700,492 ;
		  FONT oFont;
		  STYLE  WS_VSCROLL + WS_HSCROLL MULTISELECT

		  oBrowse2:aArray := oItens
		  CREATEARLIST(oBrowse2, oItens)

		  oBrowse2:aColumns[1]:heading:="Codigo"
		  oBrowse2:aColumns[2]:heading:="Descricao"
		  oBrowse2:aColumns[3]:heading:="Quantidade"

		  *oBrowse1:aColumns[9]:picture:="@R 99,999,999.99"
		  *oBrowse1:acolumns[10]:picture:="@R 99,999,999.99"

		  oBrowse2:aColumns[3]:nJuslin:=DT_RIGHT
		  *oBrowse1:acolumns[8]:nJuslin:=DT_RIGHT


		  END PAGE OF oPage1
		  BEGIN PAGE 'Resumo Grupos' OF oPage1
		  END PAGE OF oPage1
		  BEGIN PAGE 'Resumo Cidades' OF oPage1
		  END PAGE OF oPage1

   ACTIVATE DIALOG oDlg


RETURN oDlg:lresult



RETURN

Se alguém puder me dar uma luz, ficarei grato.

Sds,
Júlo

Problemas com Browse Array

Enviado: 04 Out 2011 12:09
por sygecom
Qual a versão da sua Hwgui ?

Problemas com Browse Array

Enviado: 04 Out 2011 12:15
por jelias
Amiguinho,

Arquivo Hwgui.lib - 16/02/2010 10:28 - 738Kb

Sds,

Júlio

Problemas com Browse Array

Enviado: 04 Out 2011 21:12
por ANDRIL
oDados=ASORT(vDados,,, {|x,y| x[4] < y[4] } )
cDados=ASORT(vDados,,, {|a,c| a[6] < c[6] } )
iDados=ASORT(vDados,,,{|x,y| x[7] < y[7] } )
Eu acho que o problema é que a função ASORT ela nao retorna um novo array formatado e sim organiza o array, logo
oDados, cDados e IDados referenciam o mesmo array e prevalece a ultima organizacao valida.

Tente fazer assim:

Código: Selecionar todos

oDados:={}; cDados:={}; iDados:={}
ASORT(vDados,,, {|x,y| x[4] < y[4] } ) 
ACOPY(vDados,oDados)

ASORT(vDados,,, {|a,c| a[6] < c[6] } ) 
ACOPY(vDados,cDados)

ASORT(vDados,,,{|x,y| x[7] < y[7] } ) 
ACOPY(vDados,iDados)
Nao testei, mais tenta ai, acho que esse deva ser o caminho, criar um ponteiro na memoria para cada organizacao feita.

Boa sorte!

Problemas com Browse Array

Enviado: 05 Out 2011 10:00
por jelias
Amigo,

Obrigado pela ajuda. Realmente a função ARRAY organiza o array. O único detalhe que é com o ACOPY não deu certo, estava dando um erro da variável criada, então fiz da seguinte mandeira e funcionou.

Código: Selecionar todos

ASORT(vDados,,, {|x,y| x[4] < y[4] } )
oDados:=ACLONE(vDados)
ASORT(vDados,,, {|a,c| a[6] < c[6] } )
cDados:=ACLONE(vDados)
ASORT(vDados,,,{|x,y| x[7] < y[7] } ) 
iDados:=ACLONE(vDados)
Muito Obrigado, resolvido o problema.

Sds,

Júlio

Problemas com Browse Array

Enviado: 05 Out 2011 10:45
por ANDRIL
Realmente o uso correto é ACLONE(), NAO me atentei que estava usando array MULTIDIMENSIONAL, no qual a funcao ACOPY() nao consegue exergar corretamente. Fico feliz que resolveu.

Abracos.