Duvidas de criação de indices.

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Duvidas de criação de indices.

Mensagem por Ricardo Sales Ribeiro »

Bom Dia
Amigos


Uma duvidas, eu criei uma rotina para criar um indice on seria por NroOds, numero de ordem de serviços, e status,
o status eu só poderia mostra os ´P´pendentes, eu ainda tenho status ´F´ finalizada e ´C´ cancelada.


Use OrdOds
Index on NroOds to OrdOdsCD for status = ´P´

Qdo eu utilizar esse arquivo com esse indice, só mai me mostrar naturalmente asd os com estatus ´P´, no arquivo
as com status ´F´ e ´C´, não aparecerem.

Numa consulta, esse arquivo continua pesado ou seja, mesmo sem mostrar as C e as F ?

Meu problema é o seguinte, esse arquivo é para ter uma consulta rápida, já que os com status ´P´ é no maximo 10 itens,
mas tem horas que fica como se fosse processando alguma coisa, como posso deixar esse arquivo sempre leve.

Como posso fazer para na hora da atualização de indices, eu excluir os registros com status ´F´ e ´C´?

Atenciosamente.
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Duvidas de criação de indices.

Mensagem por Kapiaba »

Olá, você usa indice: .CDX ou .NTX?

Abs.
Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Duvidas de criação de indices.

Mensagem por Ricardo Sales Ribeiro »

Caro amigo
Boa Tarde

Eu ainda uso Ntx, não aprendi a usar cdx.

Gde abraço
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Duvidas de criação de indices.

Mensagem por Jairo Maia »

Olá Ricardo,

De cara, eu mudaria isso:

Código: Selecionar todos

Use OrdOds
Index on NroOds to OrdOdsCD for status = ´P´
Para isso:

Código: Selecionar todos

Use OrdOds
Index On status="P" To OrdOdsCD
Mas ideal mesmo seria se você postasse sua função para melhor entendimento.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Duvidas de criação de indices.

Mensagem por Ricardo Sales Ribeiro »

Bom Dia!

Não entendi a sua opção, como a rotina vai saber que estou organizando por NroOds, e com status =´P´

Index on Status=´P´ TO OrdSerCd
Atenciosamente
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Duvidas de criação de indices.

Mensagem por Kapiaba »

Olá, tente assim ou modifique para seu gosto:

Código: Selecionar todos


   ERASE OrdOdsCD.NTX  // Para não acumular lixo no .NTX.

   USE OrdOds EXCLUSIVE

   INDEX ON NroOds TO OrdOdsCD           ;
         FOR ( .NOT. EOF() )       .AND. ;
             OrdOds->STATUS  = "P" .AND. ;  // Somente os pendentes
             OrdOds->STATUS != "F" .AND. ;
             OrdOds->STATUS != "C"

   CLOSE DATABASE

   USE OrdOds

   SET INDEX TO OrdOdsCD

   Browse()  // para ver o que mostrara...

Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Duvidas de criação de indices.

Mensagem por Jairo Maia »

Olá Ricardo,

Verdade!

É que tentei fugir da cláusula FOR por achar que poderia ser ela o problema. Mas faltou o detalhe da ordem:

Código: Selecionar todos

Index on STR(NroOds)+Status=´P´ TO OrdSerCd
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Duvidas de criação de indices.

Mensagem por JoséQuintas »

Tenho a impressão de que o índice com FOR não funciona pra atualização no Harbour.
Pra deixar compatível, a sugestão é manter um índice por status + numero, e usar o SET SCOPE se precisar.

Sem scope, a pesquisa ficaria assim:

Código: Selecionar todos

SEEK "P"
cTxt := ""
DO WHILE status == "P" .AND. .NOT. Eof()
     cTxt += Str( arquivo->Numero, 6 ) + ","
     SKIP
ENDDO
Só pra lembrar: é pra manter o índice sempre ativo, se for indexar só na hora de mostrar então melhor trabalhar sem índice.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder