Não consigo entender!!

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Machado_s
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 21 Out 2003 19:58
Localização: Belém-Pá

Não consigo entender!!

Mensagem por Machado_s »

POR FAVOR, ALGUEM PODE ME AJUDAR! :f

Acabei de escrever esta rotina e simplesmente não está funcionando, até agora não consigo enxergar onde está o erro. Será q alguns dos irmãos poder me dá uma mão....?

Estou usando um dbf temporário para enxugar os dados para o meu tbrowse, só q qdo vou visualizar os dados só me exibe o ultimo registro. Não estou entendendo nada. :(Neg

Abaixo a minha rotina:


Código: Selecionar todos

SELECT 0                                           // seleciona area
IF ABREREDE("EPSS",.f.,.t.,0)
 Set index to (drvdbf)+"cmpemp"
ELSE
 Close Data
 RESTSCREEN(0,0,MAXROW(),79,tela_fundo)
 Return
ENDI

IF ABREREDE("SOLICITO",.f.,,0)
 Set index to (drvdbf)+"cmpsol1", (drvdbf)+"cmpsol2"
ELSE
 Close Data
 RESTSCREEN(0,0,MAXROW(),79,tela_fundo)
 Return
ENDI

IF ABREREDE("TEMPSOL",.f.,,0)
 COPY STRU TO I&usuario
 USE I&usuario EXCLUSIVE ALIAS TMPS
 ZAP
 INDEX ON numero TO I&usuario
ELSE
 Close Data
 RESTSCREEN(0,0,MAXROW(),79,tela_fundo)
 Return
ENDI

ls:=4; cs:=2; li:=22; ci:=78
SETCOLOR(drvcortel)
CAIXA(mold,ls,cs,li,ci)               // monta caixa da tela
@ ls,  cs+2 Say " " + MAIUSC("solita‡„o de compra") + " "   COLOR(drvtittel)
@ ls+2, cs+2 Say "Data da Solicita‡Æo =[  /  /    ]"
SETCURSOR(1)
mData:= DATAC
SETCOLOR(drvcort1+","+drvcorget+",,,"+corcampo)
@ ls+2, cs+24 get mData Pict "@D"
Dre()
If LASTKEY() == K_ESC
 Close Data
 RESTSCREEN(0,0,MAXROW(),79,tela_fundo)
 Return
Endi

DBOX("AGUARDE..",10,,,NAO_APAGA)

SELE SOLICITO                          // dbf principal
DBSetorder(2)                           // abre 2 indices
DBSeek( DTOS(mData) )
WHIL !Eof() .and. DATA = mData
  If flag<>" "                             // se for diferente
   SKIP                                     // pula para o proximo registro
   LOOP
  Endi

  SELE EPSS                                 // dbf das empresas
  DBSeek (SOLICITO->empress)   // pesquisando empresa

  SELE TMPS                                // dbf temporario
  dbAPPEND()
  TMPS->numero  := SOLICITO->numero
  TMPS->data    := SOLICITO->data
  TMPS->setor   := SOLICITO->setor
  TMPS->requis  := SOLICITO->requis
  TMPS->empress := SOLICITO->empress
  TMPS->nomemp  := EPSS->nome
  TMPS->hora    := SOLICITO->hora
  TMPS->flag    := SOLICITO->flag
  dbCOMMIT()
  SELE SOLICITO
  SKIP
ENDD

// até aqui beleza

WHIL TRUE

 SETCURSOR(0)
 op_menu:=INCLUSAO
 
 SELE TMPS
 oBrow:= TBrowsenew(ls+1,cs+1,li-1,ci-1)
 oBrow:colorspec := "w+/b,n/w,n,w/b,w/b,r/bg,gr+/bg"
 oBrow:colsep    := chr(32) + chr(179) +  chr(32)
 oBrow:headsep   := chr(196) + chr(194) + chr(196)
 oBrow:footsep   := chr(196) + chr(193) + chr(196)

 oCtr1 := TBcolumnnew ("N§ Solic.", { || TRANS(TMPS->numero,"99999") })
 oCtr2 := TBcolumnnew (" Setor    ", { || SETOR->(DBSeek(TMPS->setor),SETOR->nome) })
 oCtr3 := TBcolumnnew ("Empresa   ", { || TRANS(TMPS->nomemp,"@!") })
 oCtr4 := TBcolumnnew ("Requisitante " ,{ || TRANS(TMPS->requis,"@!") })
 oCtr5 := TBcolumnnew ("Hora  ", { || TRANS(TMPS->hora,"@!") })

 /* Crio o browse com as colunas definidas.. */
 oBrow:AddColumn(oCtr1)
 oBrow:AddColumn(oCtr2)
 oBrow:AddColumn(oCtr3)
 oBrow:AddColumn(oCtr4)
 oBrow:AddColumn(oCtr5)

 oBrow:GoTop()
 WHIL (.t.)

   setcursor (0)
   whil ( !oBrow:Stabilize () ); endd

   if oBrow:Stable
    nTecla:= Inkey(0)
   endi

   DO Case

    Case (nTecla == K_ESC);Exit
    Case (nTecla == K_DOWN);oBrow:down()
    Case (nTecla == K_UP);oBrow:up()
    Case (nTecla == K_LEFT);oBrow:left()
    Case (nTecla == K_RIGHT);oBrow:right()
    Case (nTecla == K_HOME);oBrow:Home()
    Case (nTecla == K_END);oBrow:End()
    Case (nTecla == K_PGUP);oBrow:pageup()
    Case (nTecla == K_PGDN);oBrow:pagedown()
    Case (nTecla == K_CTRL_PGUP);oBrow:gotop()
    Case (nTecla == K_CTRL_PGDN);oBrow:gobottom()
    Case (nTecla == K_CTRL_HOME);oBrow:PanHome()
    Case (nTecla == K_CTRL_END);oBrow:PanEnd()
    Case (nTecla == K_CTRL_LEFT);oBrow:PanLeft()
    Case (nTecla == K_CTRL_RIGHT);oBrow:PanRight()
    *Case (nTecla == K_ENTER)
    Case (nTecla == K_F2);Incluir_();oBrow:RefreshCurrent()

   ENDc
   oBrow:RefreshAll()


 ENDD
 Exit

ENDD
CLOSE ALL
RETURN[/color]
Agradeço pela ajuda, obrigado!!

s´[]
Machado_s
dilsonmachado@hotmail.com.br
ds_machado@ig.com.br


"O.sucesso resulta de cem pequenas coisas feitas de forma um pouco melhor. O insucesso, de cem pequenas coisas feitas de forma um pouco pior". (Henry Kissinger)
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Qual é o erro?
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
Machado_s
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 21 Out 2003 19:58
Localização: Belém-Pá

Mensagem por Machado_s »

Olá vagner!

O erro meu amigo é q só conigo visualizar o ultimo no registro, tipo, no dbf temporário tenho 5 registro e somente consigo vê o ultimo no tbrowse. Por Que?

No aguardo...

Machado_s
dilsonmachado@hotmail.com.br
supgaroto
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 19 Ago 2003 14:24
Localização: Rua Aristotoles Fernandes Valdares, 1190

Mensagem por supgaroto »

Tô meio sem tempo, não cheguei nem a ler sua rotina.

Mas pq vc não usa o DBEDIT()?

Ao meu ver, menos complicado...
gavel
Usuário Nível 1
Usuário Nível 1
Mensagens: 39
Registrado em: 16 Mar 2005 07:30

Arquivo temporário

Mensagem por gavel »

Amigo, quando tenho um erro fantasma como esse eu coloco um contador na tela com um inkey(0) dentro dos WHILES para ver se está contando direito e onde está vazando...

Aí quando roda você sabe em que parte ele está furado.

hehehe :))

mandei Lesgal.
henrique
Usuário Nível 1
Usuário Nível 1
Mensagens: 7
Registrado em: 29 Dez 2004 12:22

Mensagem por henrique »

Tente isso:

SELE TMPS
DBGOTOP()
oBrow:= TBrowsenew(ls+1,cs+1,li-1,ci-1)

Já tentou tb rodar com o debuger? Ajuda muito e com certeza vc vai pegar o problema rodando passo a passo.

Abraço
Responder