Clipper On Line • Ver Tópico - Indices temporários, duvidas

Indices temporários, duvidas

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

Moderador: Moderadores

 

Indices temporários, duvidas

Mensagempor JoséQuintas » 18 Set 2016 10:31

Também agiliza se usar um índice existente como base, usando WHILE por exemplo.

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Indices temporários, duvidas

Mensagempor fladimir » 04 Mar 2017 19:17

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?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Indices temporários, duvidas

Mensagempor JoséQuintas » 04 Mar 2017 23:09

index.png


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-core/blob/master/include/std.ch#L513-L541
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Indices temporários, duvidas

Mensagempor clodoaldomonteiro » 21 Jan 2020 14:44

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?
   SET INDEX TO (ind01), (ind02), (ind03), (ind04), mem:(arqtmp)
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes

Indices temporários, duvidas

Mensagempor JoséQuintas » 21 Jan 2020 15:03

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Indices temporários, duvidas

Mensagempor deividdjs » 06 Fev 2024 08:38

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..

******************************************************************************
*---------------------*
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)

*/    



------------------- 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!
Windows 11 + Harbour 3.2 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

Indices temporários, duvidas

Mensagempor sygecom » 06 Fev 2024 09:05

Será que seu cQuery está chegando vazio ? testa antes se ele está vazio para não rodar o INDEX
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Indices temporários, duvidas

Mensagempor ivanil » 06 Fev 2024 09:17

aList := hb_RegExSplit(" ",alltrim(cFiltro))
ivanil
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 119
Data de registro: 11 Set 2004 15:13
Cidade/Estado: Florianópolis/SC
Curtiu: 1 vez
Mens.Curtidas: 12 vezes

Indices temporários, duvidas

Mensagempor deividdjs » 06 Fev 2024 10:19

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!
Windows 11 + Harbour 3.2 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

Anterior



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro