Página 1 de 1

Pesquisa no BD

Enviado: 08 Jan 2010 11:49
por Mano
Estou com dificuldade no Clipper 5

Preciso um comando (sequencia) que busque
no Bd atraves do codigo informado ultimo registro feito de acordo com o codigo e data

EX: do DBF

COD,N,5,0 DTEntrada,D Unid,N,10,0 V_uni,N,10,2 V_total,N,10,2
1 25/12/09 5 1,00 5,00
2 26/12/09 3 3,00 9,00
1 28/12/09 6 1,00 6,00
3 28/12/09 7 1,00 7,00
1 29/12/09 2 2,00 4,00 preciso que localize este registro atravÉs do cod informado, e mostre na tela somente o 4,00 e o armazene em uma variável
6 30/12/09 4 2,00 8,00

Re: Pesquisa no BD

Enviado: 08 Jan 2010 12:18
por alxsts
Olá!

Seja bem-vindo ao Fórum!

Você não forneceu muitos detalhes.Creio que para solucionar a questão, basta criar um índice e depois utilizá-lo na pesquisa.

Código: Selecionar todos

   // cria um índice para a tabela (suponho que o campo cod seja caracter. Se não for, use STR( cod, <tamanho-campo>) )

   USE Tabela EXCLUSIVE NEW
   INDEX ON cod + DTOS( DTEntrada ) TO ix

Recomenda-se criar uma rotina separada para indexação dee arquivos.

Pesquisa:

Código: Selecionar todos

   LOCAL nCod := SPACE(6), dDtEntrada :+ Date(), GetList := {}

   USE Tabela SHARED NEW
   SET INDEX TO Ix

   CLS

   @ 10, 10 SAY "Código         " GET cCod PICT "@!"
   @ 12, 10 SAY "Data Entrada" GET dDtEntrada

   READ

   IF Tabela->( DbSeek( cCod + dDtEntrada ) )
      Alert( "Produto encontrado" )
   ELSE
      Alert( "Produto NÃO encontrado" )
   ENDIF

Re: Pesquisa no BD

Enviado: 08 Jan 2010 15:28
por gvc
Como vc não informou a versão do Clipper que esta usando, vamos por partes:

Clipper 5.3x tem a opção de pesquisa da última ocorrencia da chave de pesquisa. Essa te resolve o problema imediatamente.

dbseek(<chave>, <softseek>, <descend>)

Se vc esta com alguma versão anterior, tera que montar a chave de indexação e pesquisa usando a função descend.

index on str(cod, 5) + descend(dtos(dtentrada)) to arqind

Qdo vc for pesquisar, terá que colocar a chave da mesma forma que foi montada no indice.

Boa sorte. Espero ter ajudado.

Re: Pesquisa no BD

Enviado: 08 Jan 2010 16:19
por alxsts
Olá!

Sinceramente não vejo a necessidade de se usar Descend nesta questão.

Re: Pesquisa no BD

Enviado: 08 Jan 2010 20:15
por gvc
alxsts escreveu:Sinceramente não vejo a necessidade de se usar Descend nesta questão.
Mano escreveu:Preciso um comando (sequencia) que busque no Bd atraves do codigo informado ultimo registro feito de acordo com o codigo e data

Re: Pesquisa no BD

Enviado: 08 Jan 2010 21:35
por alxsts
Olá!

Perfeito GVC. Você tem razão.

Eu olhei o exemplo de dados fornecido e não atentei para a questão do último registro de um código em uma data. Aliás, o exemplo não foi muito claro.

Resta saber que versão ele utiliza.

Re: Pesquisa no BD

Enviado: 08 Jan 2010 22:38
por Mano
Desculpe nao informar a versao do Clipper
A versão que uso é Clipper(R) 5.3b Intl. (Rev. 338) (1997.04.25)
tenho outras versões tbm afinal qual e a melhor??

Re: Pesquisa no BD

Enviado: 08 Jan 2010 22:56
por alxsts
Olá!
gvc escreveu:Clipper 5.3x tem a opção de pesquisa da última ocorrencia da chave de pesquisa. Essa te resolve o problema imediatamente.
Sendo assim, sugiro que você crie o índice e siga a orientação do colega GVC postada acima:

Código: Selecionar todos

dbseek(<chave>, <softseek>, <descend>)
A versão 5.3b foi a última lançada. Porém, a 5.2e é a mais utilizada por ser considerada a mais estável.