× Linguagem de Programação ADVPL

Perguntas Erro ao excluir coluna de um TCBROWSE

Mais
6 anos 10 meses atrás #32135 por jeduardomneto
Estou tentando criar um TCBROWSE dinâmico, ou seja, ora aparecem algumas colunas, ora não.
Como ainda não tenhor muita experiência em ADVPL, estou apanhando. Consegui montar um
modelo reduzido da função onde é possível reproduzir o problema. Acontece que quando é para
acrescentar novas colunas no grid, funciona beleza, mas quando preciso excluir colunas aí
ocorre o seguinte erro: array out of bounds ( 3 of 2 ) on {|| AITENS[OLIST:NAT,03]}(TESTE_EDU.PRW) 03/05/2017 18:09:21 line : 67
Não consigo entender o que estou fazendo de errado.
Segue abaixo fonte para facilitar a compreensão de meu problema.
#include "rwmake.ch"
#include "topconn.ch"
#include "totvs.ch"
#include "protheus.ch"

User Function TESTE_EDU()

Private oDlg, oList
Private cQuery := ""
Private aItens := {}
Private lCkExibe := .F.

DEFINE MSDIALOG oDlg TITLE "Teste" FROM 0,0 TO 564,1303 of oMainWnd pixel

DEFINE FONT oFont NAME "Courier New" SIZE 0,-13

oChkImp := TCheckBox():New(002,010,"Exibe Custo Standard",{|u|If(PCount()>0,lCkExibe:=u,lCkExibe)},oDlg,100,10,,,,,,,,.T.)

oList := TCBrowse():New(020,001,652,240,,,,oDlg,,,,,,,,,,,,.F.,,.T.,,.F.,,,)
oList:AddColumn(TCColumn():New("Código" ,{|| aItens[oList:nAt,01]},"@!",,,"LEFT",050,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Descrição",{|| aItens[oList:nAt,02]},"@!",,,"LEFT",100,.F.,.F.,,,,.F.,))

oList:SetArray(aItens)
oList:bWhen:= { || Len(aItens) > 0 }

oButtonC:=tButton():New(270,530,'Consultar',oDlg,{|| TstCon()} ,60,11,,,,.T.)
oButtonS:=tButton():New(270,593,' Sair ',oDlg,{|| oDlg:End()},60,11,,,,.T.)

Activate Dialog oDlg Centered //On Init EnchoiceBar(oDlg, {|| nOpca:=1, Confirma()}, {|| oDlg:End()} ,, )

Static Function TstCon()

aItens := {}

If !lCkExibe
cQuery := " SELECT B1_COD,B1_DESC "
Else
cQuery := " SELECT B1_COD,B1_DESC, B1_CUSTD "
EndIf

cQuery += " FROM SB1010 "
cQuery += " WHERE D_E_L_E_T_ <> '*' "
cQuery += " ORDER BY B1_COD "


If ( SELECT("QRYA") ) > 0
dbSelectArea("QRYA")
QRYA->(dbCloseArea())
EndIf

TCQUERY cQuery NEW ALIAS "QRYA"

dbSelectArea("QRYA")
dbGoTop()

While QRYA->(!Eof())
If !lCkExibe
AADD(aItens,{QRYA->B1_COD,QRYA->B1_DESC})
Else
AADD(aItens,{QRYA->B1_COD,QRYA->B1_DESC,QRYA->B1_CUSTD})
EndIf
dbSelectArea("QRYA")
QRYA->(dbSkip())
EndDo

If lCkExibe
oList:AddColumn(TCColumn():New("Custo Standard",{|| aItens[oList:nAt,03]},"@EZ 99999.99",,,"RIGHT",030,.F.,.F.,,,,.F.,))
EndIf

oList:SetArray(aItens)
oList:bWhen:= { || Len(aItens) > 0 }
oList:Refresh()
oDlg:Refresh()
Return()

Por favor Acessar ou Registrar para participar da conversa.

Mais
6 anos 10 meses atrás #32161 por jeduardomneto
Bom dia !

Por favor, alguém me dê alguma dica para resolver esse problema.

Obrigado.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.093 segundos
Joomla templates by a4joomla