Melhor do que o Set Filter...
Moderador: Moderadores
Melhor do que o Set Filter...
Boa tarde, gostaria de uma ajuda em relação de pesquisa, busca, como o arquivo é grande, sei que o Set Filter é lento, gostaria de saber qual o mais rápido em relação a isso.
[]´s
Wagner
Wagner
- filizola
- Usuário Nível 3

- Mensagens: 421
- Registrado em: 19 Ago 2003 20:10
- Localização: Belo Horizonte/MG
Melhor do que o Set Filter...
index on NOME to ind1 WHILE NOME="JOAO" FOR SEXO="M"
index on NOME to ind2 FOR SEXO="F"
index on NOME to ind2 FOR SEXO="F"
"Um passo a frente, e já não estará mais no mesmo lugar..."
- acelconsultoria
- Usuário Nível 3

- Mensagens: 231
- Registrado em: 10 Jan 2006 17:05
- Localização: Itápolis-SP
Melhor do que o Set Filter...
Indexar o banco de dados já acrescentando uma condição para usar como pesquisa é a melhor forma de "turbinar" as pesquisas.
Além dos exemplos do Filizola, você poderá optar por usar o OrdScope() ou SET SCOPE TO, caso esteja utilizando o Clipper 5.3. Ou ainda, uma combinação de escopo com filtragem.
Vamos supor que eu queira emitir um extrato de um produto do estoque, pra saber quais foram as entradas e saídas durante um período. Vou utilizar o SET SCOPE para delimitar o período a ser pesquisado, e depois o SET FILTER para filtrar apenas o produto desejado.
Campos do MOVIMENTO.DBF:
Data => data da venda ou da compra
CodPro => codigo do produto
Produto => descrição do produto
Quant => quantidade movimentada
Tipo => "E" para entrada ou "S" para saída
SaldoEst => saldo do estoque
Além dos exemplos do Filizola, você poderá optar por usar o OrdScope() ou SET SCOPE TO, caso esteja utilizando o Clipper 5.3. Ou ainda, uma combinação de escopo com filtragem.
Vamos supor que eu queira emitir um extrato de um produto do estoque, pra saber quais foram as entradas e saídas durante um período. Vou utilizar o SET SCOPE para delimitar o período a ser pesquisado, e depois o SET FILTER para filtrar apenas o produto desejado.
Campos do MOVIMENTO.DBF:
Data => data da venda ou da compra
CodPro => codigo do produto
Produto => descrição do produto
Quant => quantidade movimentada
Tipo => "E" para entrada ou "S" para saída
SaldoEst => saldo do estoque
Código: Selecionar todos
FUNCTION EXTRATO()
LOCAL Ini_Data, Fim_Data, nCodigo
Ini_Data := CTOD(" / / ")
Fim_Data := CTOD(" / / ")
nCodigo := 0
@ 10, 05 SAY "Data Inicial .....:" GET Ini_Data
@ 11, 05 SAY "Data Final ......:" GET Fim_Data
@ 12, 05 SAY "Código Produto :" GET nCodigo
READ
USE MOVIMENTO
INDEX ON DATA TO IDXDATA
SET INDEX TO IDXDATA // indexado por ordem de data
SET SCOPE TO Ini_Data, Fim_Data // o escopo delimita a data inicial e a data final desejada
SET FILTER TO CodPro = nCodigo // filtragem para o produto desejado
DBGOTOP()
DO WHILE !LASTKEY() = 27
DBEDIT()
ENDDO
SET FILTER TO // limpa a filtragem
SET SCOPE TO // limpa o escopo
DBCLOSEALL()
RETURN .T.
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Consultoria e Projetos
-------------------------------------------------------
Melhor do que o Set Filter...
HUm...
se JA esta criando indices melhor colocar um clausula FOR
Paiva
se JA esta criando indices melhor colocar um clausula FOR
Paiva
