Problema com eval ?

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Problema com eval ?

Mensagem por asimoes »

Senhores,

O problema eu verifiquei com o harbour (atualizado pelo svn) com a indexação: DBFNTX

Vejam o seguinte código:
O dbf deste indice tem 32 registros. Quando é feita a indexação usando o eval, só é mostrado 1 registro.

INDEX ON CNPJ TO CLIENTEA EVAL Barra()

A função Barra(): Baixei da secção downloads.

Código: Selecionar todos

function barra             // Fun‡Æo que exibe a barra de rolagem.
xxxxx:=savescreen(00,00,23,79)
cor01()
Sombrear( 21 , 06 , 24 , 76)
   //box3d( 24 , 04 , 29 , 75 , .f. , "Caixa" )
   //box3d( 26 , 05 , 28 , 74 , .t. , "Caixa" )
   box3d( 18 , 04 , 23 , 75 , .f. , "Caixa" )
   box3d( 20 , 05 , 22 , 74 , .t. , "Caixa" )

cor02()

InitBar(21, 06, 65)
lLoopCount = reccount()
@19,06 say 'Indexando arquivo: '+dbf()+' Garando ¡ndice: '+Field(1)
for I = 1 to lLoopCount
  @ 21, 70 say integer(I/lLoopCount * 100) pict '999'
  @ 21, 73 say '%'
  AdvanceBar(I/lLoopCount)
  skip
next
restscreen(00,00,23,79)
return (.t.)

procedure InitBar                             // Criando a barra de rolagem.
parameters lRow, lCol, lWidth, lScaleColr, lBarColor
public pBarRow, pBarCol, pBarWidth, pScaleColr, pBarColor, pBarStep
private lOrigColor
pBarRow    = lRow
pBarCol    = lCol
pBarWidth  = lWidth
pScaleColr = if(pcount() > 3, lScaleColr, "r/N")
pBarColor  = if(pcount() > 4, lBarColor, "gr+/N")
pBarStep   = 100 / pBarWidth / 100
lOrigColor = setcolor(pScaleColr)
@ pBarRow, pBarCol say replicate('Û', pBarWidth)
setcolor(lOrigColor)
return


procedure AdvanceBar
parameters lPercent
private lOrigColor
lOrigColor = setcolor(pBarColor)
if lPercent < 1
  @ pBarRow, pBarCol say replicate('Û', integer(lPercent/pBarStep))
else
  @ pBarRow, pBarCol say replicate('Û', pBarWidth)
endif
setcolor(lOrigColor)
return


function Integer
*--------------*
parameters lNum
return val(left(str(lNum, 21, 10), 10))

func cor01
setcolor('w+/bg+,w+/b,gb,,gr+/bg')

func cor02
setcolor('w+/bg+,w+/b,gb,,gr+/bg')

func cor03
setcolor('bg+/n,bg+/r,,,w+/b')

func cor04
setcolor('bg+*/bg+,bg+/r,,,w+/b')

Function box3d
Parameters nLinTop, nColEsq, nLinBot, nColDir, lTipoBorda

caixas := ( Chr( 218 ) + Chr( 196 ) + Chr( 191 ) + Chr( 179 ) + ;
            Chr( 217 ) + Chr( 196 ) + Chr( 192 ) + Chr( 179 )   )

lTipoBorda := IIf( PCOUNT() < 6 , .F. , lTipoBorda )
cCorAtual  := SubStr( SetColor(), 1, (At( ",", SetColor() ) - 1) )
cCorFundo  := SubStr( cCorAtual, (At( "/", cCorAtual ) + 1) )
If lTipoBorda = .F.
   If CodCor( , cCorFundo ) = 15
      SetColor( "W/" + cCorFundo )
   ElseIf CodCor( , cCorFundo ) > 7
      SetColor( "W+/" + cCorFundo )
   Else
      SetColor( cCorFundo + "+/" + cCorFundo )
   EndIf
   M->cor := SetColor()
Else
   SetColor( "N/" + cCorFundo )
EndIf
Scroll( nLinTop , nColEsq , nLinBot , nColDir , 0 )
DispBox( nLinTop , nColEsq , nLinBot , nColDir , caixas )
If lTipoBorda = .F.
   SetColor( "N/" + cCorFundo )
Else
   If CodCor( , cCorFundo ) = 15
      SetColor( "W/" + cCorFundo )
   ElseIf CodCor( , cCorFundo ) > 7
      SetColor( "W+/" + cCorFundo )
   Else
      SetColor( cCorFundo + "+/" + cCorFundo )
   EndIf
   M->cor := SetColor()
EndIf

@ nLinTop, nColDir Say "¿"
* DispBox( ( nLinBot - nLinTop - 1 ) , nColDir , ( nLinBot - nLinTop - 1 ) , nColDir )
DispBox( nLinTop +1 , nColDir , nLinBot , nColDir , caixas )
** SayDown( Replicate( "³" , ( nLinBot - nLinTop - 1 ) ), 0, nLinTop + 1, nColDir )
@ nLinBot, nColDir Say "Ù"
@ nLinBot, nColEsq+1 Say Replicate( "Ä", ( nColDir - nColEsq - 1 ) )
Return

Function CodCor
Parameters numero, scor
M->aCores := { "N" , "B" , "G" , "BG" , "R" , "RB" , "GR" , "W" , "N+" , "G+" , "BG+" , "R+" , "RB+" , "GR+" , "W+" }
If scor # nil
   nRetorno := aScan( M->aCores , sCor )
   If nRetorno == 0
      M->aCores := { "N" , "B" , "G" , "BG" , "R" , "RB" , "GR" , "W" , "N*" , "G*" , "B*" , "R*" , "R*" , "G*" , "W*" }
      nRetorno := aScan( M->aCores , sCor )
   EndIf
   Return nRetorno
EndIf

Return M->aCores[ Val( M->Numero ) ]

Function Sombrear()
 Para wR,wC,wR1,wC1
 cCol = SaveScreen(wR,wC,wR1,wC1)
    For nA = 2 to Len( cCol ) Step 2
    cCol = Stuff(cCol, nA, 1 , CHR(8) )
 Next
 RestScreen(wR,wC,wR1,wC1,cCol)
 DispBox(cCol)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Problema com eval ?

Mensagem por Toledo »

asimões, acho que esta função barra está com um pequeno erro da linha 15 a 21. Altere estas linhas para:

Código: Selecionar todos

reg_atual+=1
@ 21, 70 say integer(reg_atual/lLoopCount * 100) pict '999'
@ 21, 73 say '%'
AdvanceBar(reg_atual/lLoopCount)
E declare a variável reg_atual:=0 antes da linha do comando INDEX.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Problema com eval ?

Mensagem por asimoes »

Olá Toledo,

Obrigado pela dica, mesmo fazendo a modificação sugerida, o problema continua.
Fazendo a indexação com EVAL na hora de exibir a tabela, só aparece um registro, sem o eval, todos são exbidos na ordem do indice selecionado.
Deve ser algum bug do RDD
[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Problema com eval ?

Mensagem por asimoes »

Eric,

O enfeite que você se refere é um exemplo que está disponível para todos, por sinal, eu baixei este exemplo na na seção downloads e não é de minha autoria.
De qualquer forma, apresente a forma adequada para enriquecer a função.

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Problema com eval ?

Mensagem por asimoes »

Eric,

Muito obrigado, você é um cara muito prestativo.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder