Criar indices - Classe TBrowse

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

CARLOS GOMES
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 16 Ago 2003 18:59
Localização: Duque de Caxias - RJ

Criar indices - Classe TBrowse

Mensagem por CARLOS GOMES »

:(
Olá pessoal!
Não estou conseguindo filtrar uns registros
estou usando a seguinte:
index on PRODUTO to DESCRI for IDTFILHO = DEBITO->IDTDEB

A classe TBrowse não respeita este indice.

Quando compilo utilizando o clipper ele funciona, mas quando uso harbour não funciona, será que alguém poderia me ajudar???

Atenciosamente.
Carlos Gomes
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche,não tive problemas com o TBROWSE ainda....a não ser nas definição de COR que eu usa em BLOCO no CLIPPER e tive que dar uma alterada para usar no xharbour.......mas me diz uma coisa.... vc usa DBFCDX....se sim vc poder usar um filtro de ORDSCOPE()....
Quando compilo utilizando o clipper ele funciona, mas quando uso harbour não funciona, será que alguém poderia me ajudar???
Posta ai para nos ver como vc esta usando o TBROWSE com esse indice...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
CARLOS GOMES
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 16 Ago 2003 18:59
Localização: Duque de Caxias - RJ

Mensagem por CARLOS GOMES »

Olá sygecom!
Eu utilizo arquivos *.ntx, ai está uma parte da minha rotina.

Código: Selecionar todos

Antes de iniciar a rotina que cria oTBrowse eu crio o indice:

*************
index on IDT_PAI to TEMP for IDT_PAI = DEBITO->IDTDEB
*************


***********************************************************
STATIC FUNCTION CriarBrowser( nLi, nCi, nLf, nCf ) 
***********************************************************                                 
/* * * * *
* Funçao: CriarGerallBrowser
* Objetivo: Criar o TBrowser Gen‚rico
* Parametros: nLi, nCi, nLf, nCf = Coordenadas
* Variaveis: nColLen = Numero de elementos da matriz mNomeCampo
*            i       = Controle For Next
*            cBloco  = Bloco para formatar os campos no TBrowser
*/
LOCAL oMyBrowser,;
      nColLen := 0,;
      i := 0,;
      cBloco

//..Calcula o numero de colunas igual ao numero de campos
nColLen := LEN( mCampBrowse ) 

//...Criando o objeto TBrowser
oMyBrowser := TBrowseDB( nLi+2, nCi+1, nLf-1, nCf-1 )

//...Prepara cores padrao para o TBrowse
//........................1....2....3....4....5...6
oMyBrowser:colorSpec := "W+/B,N/W,GR+/B,R+/B,R/W,G/B"

//...Prepara separadores de cabecalho e colunas
//oMyBrowser:headSep := CHR(205)+CHR(209)+CHR(205)
oMyBrowser:headSep := CHR(205)+CHR(205)+CHR(205)
oMyBrowser:colSep  := " "+CHR(179)+" "

//...Definicao de colunas com TBColummnNew()
for i := 1 TO  nColLen
  
   cBloco := fieldblock(mCampBrowse[i,1])  //..Nome do Campo

   oColuna := TBColumnNew(mCampBrowse[i,3], cBloco) //..Titulo e campo
   oColuna:headSep := CHR(205)
   oColuna:colSep  := " "+ CHR(179)+" "
   oColuna:defColor:= {1,2}
   oColuna:picture := mCampBrowse[i,2]  //..Mascara
   oColuna:colorblock:={|| iif(deleted(), {4,5},{1,2})}

   //...Adiciona colunas ao TBrowser
   oMyBrowser:addColumn(oColuna)
   
next
                         
return oMyBrowser

***********************************************************
static function TestarTecla( nKey, oMyBrowser ) 
***********************************************************
local mVar
      
do case
   case nKey == K_UP
      oMyBrowser:up()     // move o cursor para cima

   case nKey == K_DOWN
      oMyBrowser:down()   // move o cursor para baixo

   case nKey == K_LEFT
      oMyBrowser:left()   // move o cursor para esquerda

   case nKey == K_RIGHT
      oMyBrowser:right()  // move o cursor para a direita

   case nKey == K_HOME
      oMyBrowser:goTop()  //home()   // move cursor para a primeira coluna

   case nKey == K_END
      oMyBrowser:goBottom()    //end()    // move o cursor para a ultima coluna

   case nKey == K_PGUP
      oMyBrowser:pageUp() // move fonte de dados uma tela acima

   case nKey == K_PGDN
      oMyBrowser:pageDown() // move fonte de dados uma tela abaixo

   case nKey == K_CTRL_PGUP
      oMyBrowser:goTop()   // vai para a primeira linha da fonte

   case nKey == K_CTRL_PGDN
      oMyBrowser:goBottom() // vai para a ultima linha da fonte

   case nKey == K_CTRL_HOME
      oMyBrowser:panHome()  // vai para a primeira coluna real

   case nKey == K_CTRL_END
      oMyBrowser:panEnd()   // vai para a ultima coluna real

   case nKey == K_CTRL_LEFT
      oMyBrowser:panLeft()  // desloca janela para a esquerda

   case nKey == K_CTRL_RIGHT
      oMyBrowser:panRight()  // desloca a janela para a direita

   case nKey == K_ENTER      //..Acessa rotina de altera‡ao
         Alterar()
         oMyBrowser:refreshAll()
   case nKey == K_F5     //.. Acessa rotina Filho
         Sistema06()  //andamento()
   case nKey == K_F3     //.. Acessa rotina de Visualiza‡ao
         Visualizar()
   case nKey == K_INS     //.. Acessa rotina de inclusao
         Incluir()
         oMyBrowser:refreshAll()
   case nKey == K_DEL
         DelRegistro() 
   case nKey == K_ESC        // abandona o programa
      SETCURSOR(SC_NORMAL)   // retorna ao cursor normal
      RETURN .F.

ENDCASE

RETURN .T.

Se precisar de mais detalhes postarei o resto das rotina...

Atenciosamente.
Carlos Gomes
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Criar indices - Classe TBrowse

Mensagem por alaminojunior »

CARLOS GOMES escreveu::(
Olá pessoal!
Não estou conseguindo filtrar uns registros
estou usando a seguinte:
index on PRODUTO to DESCRI for IDTFILHO = DEBITO->IDTDEB

A classe TBrowse não respeita este indice.

Quando compilo utilizando o clipper ele funciona, mas quando uso harbour não funciona, será que alguém poderia me ajudar???

Atenciosamente.
Carlos Gomes
Caro colega, usando xHarbour, encontrei algumas diferenças de sintaxe.
Tente por exemplo:

Index on Produto Tag Pro For Idtfilho = Debito->Idtdeb
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

CARLOS GOMES:
Tche, eu dei uma olhada no seu codigo...e a principio esta tudo certo....apesar de eu usar de maneira diferente...mas se vc colocar um SET FILTER depois do seu indice...vc se vai funcionar ....outra coisa eu vi que vc usa NTX......na minha opinião desde lah no CLIPPER é que o uso de CDX com TAG é bem mas confiavel e mais rapido.....faça alguns teste......talvez seja isso....se estiver afim de migrar para CDX e prescisar de um auxilio prende o grito......

alaminojunior
Caro colega, usando xHarbour, encontrei algumas diferenças de sintaxe.
Tente por exemplo:
Index on Produto Tag Pro For Idtfilho = Debito->Idtde
Tche, no xharbour com o NTX pode usar TAG ?

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
CARLOS GOMES
Usuário Nível 1
Usuário Nível 1
Mensagens: 38
Registrado em: 16 Ago 2003 18:59
Localização: Duque de Caxias - RJ

Mensagem por CARLOS GOMES »

:)) Olá Leonardo Machado!

fiz um teste rápido utilizando o SET FILTER e deu certo, muito obrigado pela ajuda.

-:] Obrigado a todos pelas sugestões e ajuda, e me coloco a disposição para ajudar no que for possível.

Atenciosamente.
Carlos Gomes
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, soh pra deixar registrado..o set filter dependendo da quantidade de registro no DBF ele se torna uma alternativa lenta.....pelo menos no CLIPPER era assim...ainda volto a dizer...tente dar um olhada na possibilidade de usar o CDX ou ainda se quiser ir um pouco mais longe use o MYSQL.

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
joserubenildosilva
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 15 Abr 2008 11:21
Localização: cuiaba-mt

Mensagem por joserubenildosilva »

Ola! Tenho meu sistema todo em NTX qual o melhor caminho para usar CDX.
Esta em clipper 5.01 agora compilei com xharbour .99.70

Obrigado
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Pode começar procurando aqui no forum por "REQUEST DBFCDX" Já postei varias vez de como migrar de NTX para CDX, é a mesma coisa que no clipper...se não achar avisa que posto um Help de novo.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder