Página 1 de 1

ERRO NO TBROWSE COM ARRAY

Enviado: 11 Mar 2005 11:30
por Machado_s
Amigo(s)! vc's poderiam me ajudar ? :xau
Estou tentando usar pela 1 vez o tbrowse, assim sendo realizei um teste com este peq exemplo q o nosso irmão Dudu postou aqui no forum, mas infelizmente ñ conseguir até agora q funcione.
:(Neg

Está dando um erro: BASE/1132 (BOUND ERROR: array access)

Código: Selecionar todos

#include "inkey.ch"

CLS
USE CLIENTE INDEX CLI1 ALIAS CLI NEW   (indexado pelo codigo)
USE CLINOTA INDEX CLINOTA ALIAS ARQNOT NEW  (indexado pelo codigo)


cCodigo:= 0                                                
@ 2,5 say " Informe o codigo do cliente :"  get cCodigo  pict '@K 9999'
read

/* Defino a Matriz */
anot2:= {}

ARQNOT->(DBseek(cCodigo))

While ARQNOT->codigo==cCodigo .and. ARQNOT->(!eof())
   AADD(anot2, {ARQNOT->numnot,ARQNOT->qtdnot} )
   ARQNOT->(DBskip())
Endd

/* verifico se a matriz possue conteudo */

if len(anot2)>0

   /* Crio o Tbrowse */
   oCorpo2:= tbrowsenew(03, 03, 12, 73)

   /* Para controlar a posicao do array */
   nPoint:= 1

   /* Cores e Molduras do Tbrowse */
   oCorpo2:colorspec  := "w+/bg,n/w,n,n,w/b,r/b,r/bg"
   oCorpo2:colsep     := chr(32) + chr(179) +  chr(32)
   oCorpo2:headsep    := chr(196) + chr(194) + chr(196)
   oCorpo2:footsep    := chr(196) + chr(193) + chr(196)

   /* Para controlar a navegacao */
   oCorpo2:gotopblock    := { || nPoint:= 1 }
   oCorpo2:gobottomblock := { || nPoint:= len(anot2) }
   oCorpo2:skipblock     := { |n| arrayskiper (n, @nPoint, len(anot2)) }

   /* Defino as colunas */
   oCol1 := tbcolumnnew ("Nota",{ |x| iif ( x <> nil, anot2[nPoint,1]:= x,anot2[nPoint,1])})               
   oCol2 := tbcolumnnew ("Qtde",{ |x| iif ( x <> nil, anot2[nPoint,4]:= x,anot2[nPoint,4])})
   
   /* Crio o browse com as colunas definidas.. */
   oCorpo2:addcolumn(oCol1)
   oCorpo2:addcolumn(oCol2)

   Whil (.t.)

     setcursor (0)
     
     whil ( !oCorpo2:stabilize () )
     endd
     
     if oCorpo2:stable
      nTecla:= Inkey(0)
     endi
     
     Do Case
      Case (nTecla == K_ESC)
        Exit
      Case (nTecla == K_DOWN)
        oCorpo2:down()
      Case (nTecla == K_UP)
        oCorpo2:up()
      Case (nTecla == K_LEFET)
        oCorpo2:left()
      Case (nTecla == K_RIGHT)
        oCorpo2:right()
      Case (nTecla == K_PGUP)
        oCorpo2:pageup()
      Case (nTecla == K_PGDN)
        oCorpo2:pagedown()
      Case (nTecla == K_CTRL_PGUP)
        oCorpo2:gotop()
      Case (nTecla == K_CTRL_PGDN)
        oCorpo2:gobottom()
     ENDc 

   Endd

else            // se nao achar nota para esse cliente

   Tone(3000,2)
   ? "Nao existem notas emitidas para este cliente...."
   inkey(2)

endi

*****************
* ArraySkiper()
* Controla o posicionamento do browse no array
* by dudu_xbase
*****************

Function ArraySkiper (n, nPointer, nElementos)
 LOCAL nSalvo:= nPointer

 If ( n > 0 )
  nPointer := min (nPointer + n, nElementos)
 Else
  nPointer := max (1, nPointer + n)
 Endi
 RETU(nPointer - nSalvo)
Agradeço por qualquer ajuda.
Obrigado!!

machado_s
ds_machado@ig.com.br
dsmac@orkut.com.br

* Um amigo que não saiba harmonizar um conflito nunca é um verdadeiro amigo. Rui Pais *


Clipper5.2e, Blinker 7

Enviado: 11 Mar 2005 12:11
por Dudu_XBase
Boa Tarde Machado realmente estava com erro na 2 coluna pois estava chamando a posição 4 anot2[nPoint,4] na matriz não existe essa posição por isso ocorre esse erro.
A matriz aNot2 possui somente 2 posições nota e qtde.
Já ajustei a postagem anterior tb.
Desculpe por qq coisa ae.


Correção

Código: Selecionar todos


 /* Defino as colunas */
oCol1 := tbcolumnnew ("Nota",{ |x| iif ( x <> nil, anot2[nPoint,1]:= x,anot2[nPoint,1])})
oCol2 := tbcolumnnew ("Qtde",{ |x| iif ( x <> nil, anot2[nPoint,2]:= x,anot2[nPoint,2])}) 
 

Enviado: 11 Mar 2005 16:23
por Machado_s
Ok Dudu! tem problema não cara, isso acontece com tudo mundo.
O q importa é que FUNCIONOU amigo.

Um grande abraço e obrigado! ( Aguardem por mais duvidas ).

machado_s
ds_machado@ig.com.br
dsmac@orkut.com.br

" É mais fácil perdoar a um inimigo do que a um amigo".
(Dorothea Deluzy)


Clipper5.2e, Blinker 7, Med.