Página 2 de 2
Indices temporários, duvidas
Enviado: 18 Set 2016 10:31
por JoséQuintas
Também agiliza se usar um índice existente como base, usando WHILE por exemplo.
Código: Selecionar todos
IF mMesNtx != nOpcMes
Mensagem( "Aguarde... Organizando movimentação do mes..." )
SET INDEX TO ( PathAndFile( "ctdiari" ) )
SEEK m_AnoMes
INDEX ;
ON ctdiari->diCCusto + ctdiari->diCConta + dtos( ctdiari->diData ) + ctdiari->diLote + ctdiari->diLanc + ctdiari->diMov ;
TO (mTmpFile) ;
FOR Val(ctdiari->diCCusto)#0 .AND. GrafProc() ;
WHILE Left(dtos(ctdiari->diData),6) == m_AnoMes
mMesNtx := nOpcMes
ENDIF
Indices temporários, duvidas
Enviado: 04 Mar 2017 19:17
por fladimir
Cai aki procurando sobre OrdCondSet pra fazer um #command para o Index e já tava pronto e eu me matando a tarde de sabado toda e fui achar só agora... kkk mas q bom q achei e deu certo,
Agora com relação ao tópico 2 dúvidas...
Zé onde vc achou o #command do INDEX .... => OrdCondSet(), OrdCreate() q acabou elucidando a questão de q MEMORY e TEMPORARY (q tb tinha dúvida) passa TRUE para o OrdCondSet no parametro lTemporary?
Com relação a usar While no Indice seja temporario ou não pra mim é algo q já tinha visto, porém não tinha utilizado e olhando seu exemplo não entendi 100% poderia explicar?
Pq vc definiu pra usar um indice tal e procurou nele o Ano/Mes para posicionar e a partir disto criou um outro indice limitando com a condição do FOR e enquanto (WHILE) for o AnoMes, correto?
Se sim, o q eu não entendi é o Temporary aki em função do While agilliza tb ou não?
Indices temporários, duvidas
Enviado: 04 Mar 2017 23:09
por JoséQuintas
o WHILE acaba filtrando os registros que serão inclusos no novo índice, então vai ser mais rápido.
Tem vários meses/anos no arquivo e vão ser utilizados apenas os registros referentes aquele mes/ano.
O tradicional sempre funciona.
As novidades, que dependem de acrescentar alguma coisa, dependem dessa "alguma coisa".
Lembro que esse em memoria só dava certo se acrescentasse a lib correspondente.
Se preferir:
https://github.com/vszakats/harbour-cor ... #L513-L541
Indices temporários, duvidas
Enviado: 21 Jan 2020 14:44
por clodoaldomonteiro
Boa tarde,
Reativando este tópico.
Pode-se mesclar abrir tabela com os índices físicos dela mais um índice temporário, afim de deixar atualizar todos os índices físicos?
Código: Selecionar todos
SET INDEX TO (ind01), (ind02), (ind03), (ind04), mem:(arqtmp)
Indices temporários, duvidas
Enviado: 21 Jan 2020 15:03
por JoséQuintas
Sim, já fiz uso disso.
Mas cuidado com isso, porque se algum terminal atualizar o DBF, o temporário pode ficar desatualizado e acusar como índice corrompido.
Indices temporários, duvidas
Enviado: 06 Fev 2024 08:38
por deividdjs
bom dia amigos ..
Fiz uma função a tempos para buscar registros na minha base de dados de produtos que contenha palavras chaves .. porem quando o usuario deixa um espaço sem querer na frente da pesquisa apresenta um erro de sintax .. como poderia resolver este problema ?? preciso tirar esse espaço inicial caso haja ...
segue codigo..
Código: Selecionar todos
******************************************************************************
*---------------------*
procedure BUSCA_PRO // FILTRA PELA DESCRIۂO PRODUTOS QUE CONTEM POR PALAVRAS CHAVES // USANDO INDICES TEMPORARIOS
*---------------------*
local Getlist := {}
LOCAL cQuery := "", cParte := "", nParte := 0, aList, cFiltro := space(36),;
vBusc
SETCURSOR(2)
vBusc := SavEnv(00,00,25,80)
SETCOLOR("N/W*,W*/B+")
WIN(14,17,19,62, "B£squeda", WT_AZUL1BRANCO, WD_AZUL1BRANCO)
FRAME(16,18,18,61,"Informe la Descripci¢n",1,3,3,3)
SET COLOR TO "R/W*"
@17,19 say "" get cFiltro picture "@!" COLOR "R/W*"
read
if lastkey()=27
rstenv(vBusc)
return(2)
endif
IF !Empty(cFiltro)
aList := hb_RegExSplit(" ",cFiltro)
FOR EACH cParte IN aList
IF Empty(cParte)
Exit
ENDIF
IF ++nParte > 1
cQuery += ' .AND. '
ENDIF
cQuery += "'" + cParte + "'" + ' $ cc_descr'
NEXT
IF PRO->(ordNumber("TMPFILTRO_PROD")) > 0
PRO->(ordDestroy("TMPFILTRO_PROD"))
EndIf
Index on cc_descr tag TMPFILTRO_PROD FOR &cQuery temporary
PRO->(dbGoTop())
ENDIF
rstenv(vBusc)
RETURN(2)
*/
Código: Selecionar todos
------------------- Internal Error Handling Information ---------------------
Subsystem Call ....: BASE
System Code .......: 1449
Default Status ....: .F.
Description .......: Erro de sintaxe
Operation .........: &
Arguments .........: [ 1] = Type: C Val: {||}
Involved File .....:
Dos Error Code ....: 0
Saludos a todos .. abraço!
Indices temporários, duvidas
Enviado: 06 Fev 2024 09:05
por sygecom
Será que seu cQuery está chegando vazio ? testa antes se ele está vazio para não rodar o INDEX
Indices temporários, duvidas
Enviado: 06 Fev 2024 09:17
por ivanil
aList := hb_RegExSplit(" ",alltrim(cFiltro))
Indices temporários, duvidas
Enviado: 06 Fev 2024 10:19
por deividdjs
ivanil escreveu:aList := hb_RegExSplit(" ",alltrim(cFiltro))
funcionou .. estava pondo ao alltrim no lugar errado ...
uma visão externa sempre funciona .. obrigado amigo ..
Abraço!