Página 1 de 1

OrdScope com Chaves Compostas

Enviado: 21 Mar 2010 11:07
por fladimir
Olá nobres colegas, tenho no sistema uma função q abre um DBedit para pesquisar conforme vai digitando letra a letra os produtos e a quantidade no estoque e seu respectivo valor algo tipo abaixo:

Código: Selecionar todos

Codigo  | Descricao do Produto      |  Saldo  |   Venda
========================================================
000001  | RACAO DOG NR 1           |       5   |   15,99
000002  | RACAO DOG NR 2           |       0   |   19,00
000003  | RACAO DOG NR 3           |       2   |   12,50
Bom recentemente alguns clientes devido o cadastro estar ficando "monstruoso" pediram uma forma de mostrar somente os produtos Ativos e/ou Ativos com Estoque.

No DBF existe um campo Chamado Ativo q recebe os valores "S" ou "N", meu indice CDX q mostra o Dbedit acima possui uma chave: Codigo e outra chave qdo o cliente altera para ordem Alfabética, ou seja, conforme abaixo:

Código: Selecionar todos

INDEX ON  Codigo    TAG Produto1 to Produto 
INDEX ON  Descricao TAG Produto2 to Produto
Pesquisando aki no fórum parece q a melhor solução seria através do OrdSetScope(), mas como fazer com chaves compostas, pois preciso q fique nas Ordens originais, ou seja, Codigo ou se o cliente mudar a ordem para Alfabética, mas com a possibilidade de filtrar somente os Ativos e se ainda assim for possível uma outra filtragem q seria Ativos com ESTOQUE.

Pensei em modificar as chaves e colocar Codigo+Ativo para Produto1 e Descricao + Ativo para Produto2 e utilizar o OrdSetScope(). Lembrando q o campo Codigo é Caracter.

Mas como seria a forma correta para utilizá-lo, pois em alguns testes q fiz não obtive sucesso...
... ou alguém tem alguma outra sugestão ?

Obrigado e Sucesso a Todos!!!

Re: OrdScope com Chaves Compostas

Enviado: 21 Mar 2010 11:28
por Maligno
O ideal seria mudar as chaves para contemplar o "status" do produto. Algo do tipo:

ATIVO + CODIGO
ATIVO + DESCRICAO
etc

Assim, na necessidade de filtragem, basta executar a função usando a chave mais apropriada. Funciona perfeitamente. Já utilizei isso várias vezes.

Re: OrdScope com Chaves Compostas

Enviado: 21 Mar 2010 11:35
por fladimir
Obrigado Maligno vou testar...

Mas só uma dúvida, como em todo o sistema qdo se refere a OrdSetFocus(1) se refere a CODIGO, alterando para o Status + Codigo eu teria q modificar algo nos outros prg´s q não vão utilizar o OrdScope() ?

Acredito q sim né devido a Dbseeks ? ou estou me confundindo ?

Grato e Sucesso a Tds!!!

Re: OrdScope com Chaves Compostas

Enviado: 21 Mar 2010 11:46
por Maligno
O ideal, se o programa já está em uso há algum tempo, é adicionar essas novas chaves ao conjunto de chaves já existente, para que você não tenha que modificar o programa todo apenas para "acertar" esse recurso adicional. Se apenas alterar o que já existe, já viu o trabalhão que terá para corrigir tudo aquilo que antes funcionava bem.

A chave 1 será mantida inalterada. Assim, nada será "estragado". E as novas terão outros valores, naturalmente. Uma dica: use nomes ao invés de números. E com um prefixo único, tipo "_ixCODIGO". O motivo é simples. Se um dia precisar apenas saber onde este ou aquele índice é utilizado num programa com dezenas de fontes, basta fazer uma busca múltipla pelo seu editor de texto favorito, se ele contar com esse recurso, claro. Mesmo que pense que nunca vai precisar disso, previna-se. O futuro é incerto. :)

Re: OrdScope com Chaves Compostas

Enviado: 21 Mar 2010 15:16
por rochinha
Amiguinhos,

Como o Maligno falow, novas chaves... novos indices, portanto se voce usa CDX não precisa se preocupar em não criar mais algumas.

Re: OrdScope com Chaves Compostas

Enviado: 21 Mar 2010 15:28
por fladimir
Ok, deu certo, grato a todos...

Sucesso!!!