Problemas com Browse Array

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

Problemas com Browse Array

Mensagem 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
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Problemas com Browse Array

Mensagem por sygecom »

Qual a versão da sua Hwgui ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

Problemas com Browse Array

Mensagem por jelias »

Amiguinho,

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

Sds,

Júlio
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Problemas com Browse Array

Mensagem 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!
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
jelias
Usuário Nível 3
Usuário Nível 3
Mensagens: 260
Registrado em: 27 Ago 2008 11:32
Localização: Minas Gerais

Problemas com Browse Array

Mensagem 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
Editado pela última vez por anacatacombs em 07 Out 2011 13:37, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Problemas com Browse Array

Mensagem 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.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Responder