× Linguagem de Programação ADVPL

Perguntas Erro ao criar campos aheader

Mais
10 anos 3 meses atrás #24117 por barater
Boa tarde
Estou precisando criar um aheader a partir do SX3, porem, no final, adicionar um aheader que nao faz parte do dicionario de dados:
Segue parte do fonte:

DbSelectArea("SX3")
DbSetOrder(1)
DbSeek("ZB5")

While !EOF() .And. X3_ARQUIVO == "ZB5"

If TRIM(sx3->x3_campo)=="ZB5_FILIAL" .or. TRIM(sx3->x3_campo)=="ZB5_FORNEC" .or. TRIM(sx3->x3_campo) == "ZB5_LOJA" .or.;
TRIM(sx3->x3_campo)=="ZB5_DESC" .Or. TRIM(sx3->x3_campo)=="ZB5_ALERT1" .Or. TRIM(sx3->x3_campo)=="ZB5_ALERT2" .Or.;
TRIM(sx3->x3_campo)=="ZB5_ALERT3" .Or. TRIM(sx3->x3_campo)=="ZB5_DATA1" .Or. TRIM(sx3->x3_campo)=="ZB5_DATA2" .Or. TRIM(sx3->x3_campo)=="ZB5_DATA3"
dbSelectArea("SX3")
dbSkip()
loop
EndIf

If X3Uso(X3_USADO) .And. cNivel >= X3_NIVEL
nUsado++
AADD( aHeader, { Trim( X3Titulo() ),;
X3_CAMPO,;
X3_PICTURE,;
X3_TAMANHO,;
X3_DECIMAL,;
X3_VALID,;
X3_USADO,;
X3_TIPO,;
X3_ARQUIVO,;
X3_CONTEXT})
Endif

dbSkip()
End

nUsado++
AADD(aHeader,{ "RECNO", "RECZB5", "@E999999999999999",;
15, 0 ,"",;
"", "N", "", "" } )

If Empty(len(aCols))
aCols:={Array(nUsado+1)}
aCols[1][nUsado+1]:=.F.
For _c:=1 to nUsado
aCols[1][_c]:=CriaVar(aHeader[_c][2])
Next
Endif

.......
Acontece que ao executar o programa aparece a seguinte mensagem cfe anexo.



Obrigado pela ajuda
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24120 por AndersonBR
Respondido por AndersonBR no tópico Erro ao criar campos aheader
Bom Dia Cezar, o problema está neste trecho:
For _c:=1 to nUsado
    aCols[1][_c]:=CriaVar(aHeader[_c][2])
Next
Endif

A função criavar procura dados na SX3 para criar então da mesma forma que você cria o aHeader na unha faça o mesmo com o aCols, se não você não consegue, vai ficar mais ou menos assim:
dbSkip()
End

nUsado++
AADD(aHeader,{ "RECNO", "RECZB5", "@E999999999999999",;
15, 0 ,"",;
"", "N", "", "" } )

If Empty(len(aCols))
aCols:={Array(nUsado+1)}
aCols[1][nUsado+1]:=.F.
For _c:=1 to nUsado
  If _C <> nUsado
    aCols[1][_c]:=CriaVar(aHeader[_c][2])
  Else
    aCols[1][_c] := 0
  EndIf
Next
Endif

Por favor Acessar ou Registrar para participar da conversa.

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