Página 1 de 1

DBSEEK HELP?

Enviado: 27 Mar 2013 20:50
por pena
Pessoal fiquei muito tempo sem usar clipper, na verdade é minigui x harbour, mas o conceito é o mesmo, e estou apanhando , nao sei oque estou fazendo errado

tenho um indice

Código: Selecionar todos

   Form_Principal.Label_Mensagens.Value:="Aguarde Indexando Itens - Data 6"
   INDEX ON STR(PRODUTO,6)+DTOS(DATA) TAG CUPOM
e na rotina fiz assim, ou seja, de tal produto, tenho que ler de tras pra frente, mas nao ta rolando, nao sei o que ta acontecendo

Código: Selecionar todos

      vdatafinal:=ctod("31/12/2030")
      Itens->(DBSetOrder(6))
      Itens->(DBSeek(STR(Produtos->Codigo,6)+DTOS(vdatafinal),.F.))
      msgbox("produto "+str(produtos->codigo,6))
      msgbox("item    "+str(itens->produto,6))
      msgbox("data    "+dtos(itens->data))
      DO WHILE ! Itens->(Bof()) .AND. Produtos->Codigo=Itens->Produto .and. Itens->Data>=Frm_Inventario.T_DtaInv.Value
nao entra nunca no DO WHILE, e claro que ali no msgbox, ele ta sempre achando um codigo a mais, ou seja
se o codigo do produto é 5, ele acha o 6, e assim por diante

DBSEEK HELP?

Enviado: 27 Mar 2013 21:47
por lucimauro
Tente algo assim :

Código: Selecionar todos

vdatafinal:=ctod("31/12/2030")
   Itens->(DBSetOrder(6))
   Itens->(DBSeek(STR(Produtos->Codigo+1,6),.T.))
   dbskip(-1)
   msgbox("produto "+str(produtos->codigo,6))
   msgbox("item  "+str(itens->produto,6))
   msgbox("data  "+dtos(itens->data))
   DO WHILE ! Itens->(Bof()) .AND. Produtos->Codigo=Itens->Produto .and. Itens->Data>=Frm_Inventario.T_DtaInv.Value
Eu nao testei é so uma sugestao.

DBSEEK HELP?

Enviado: 27 Mar 2013 21:49
por pena
o conceito é esse mesmo, dbskip(-1), era pra funcionar, e muito obrigado pela atenção, e resolvi, maldito indice, exclui o indice e funcionou

DBSEEK HELP?

Enviado: 27 Mar 2013 22:50
por Pablo César
Experimentou indexar com Descend(DtoS(DATA)) ? Caso você esteja indo na outra direção com Skip -1 ao invés do Skip no Do While ?