Página 1 de 1
Criar indices - Classe TBrowse
Enviado: 09 Jun 2007 14:22
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
Enviado: 09 Jun 2007 14:38
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
Enviado: 09 Jun 2007 19:42
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
Re: Criar indices - Classe TBrowse
Enviado: 09 Jun 2007 21:34
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
Enviado: 09 Jun 2007 22:05
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
Enviado: 09 Jun 2007 23:53
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
Enviado: 10 Jun 2007 16:27
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
Enviado: 19 Abr 2008 08:24
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
Enviado: 22 Abr 2008 13:14
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.