Ajuda com Loop e tabelas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

colerapunk
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 12 Abr 2005 16:21

Ajuda com Loop e tabelas

Mensagem por colerapunk »

Pessoal
nao sou muito familiarizado com o clipper. mas preciso de um programinha simples.... Se alguem ja tiver um pronto e puder me enviar

Basicamente o programa deve ficar em um loop
O loop fica monitorando um catraca eletronica (eu ja sei como comunicar com a catraca)
Em determinado momento ele lê um codigo de barra da catraca e qdo isso acontece o programa deve gravar o codigo de barra em uma tabela que contem apenas um campo chamado (CodBarra)
Qdo gravar o codigo de barra deve entrar em outro loop e ficar monitorando outra tabela(q vai estar vazia) qdo ela estiver com mais de um registro deve-se sair do segundo loop e voltar ao loop inicial e continuar o processo
Seria facil em Delphi q ja estou acostumdo... mas se alguem puder me ajudar

Preciso de alguma coisa detalhada pois ja bati muito a cabeça e nao entendi quase nada de outros codigos q peguei
Deste agradeco
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Colega

Se entendi bem o que você quer.

Seria algo assim :

Código: Selecionar todos

sele 2
use tabela2 alias tab2
sele 1
use tabela1 alias tab1

do while .t.    // Aqui entra num loop principal que controlará tudo
   cbarra=space(6)   // Não sei qual o tamanho que você usa
   leitura=.f.   // Variável de controle de leitura

   // Loop 1

   do while leitura=.f.
      inkey(.2)  // Dá um Timeout de 2 décimos de segungo
      cbarra=monitora()  // aqui entra a função que monitora a catraca
      // quando ela fizer alguma leitura retornará o códgi de barras
      if cbarra<>space(6)
         exit // Se conseguiu receber alguma leitura então passa pro 2º loop
      endif
   enddo

   sele tab1     // Seleciona a tabela 1
   dbappend()  // Adiciona um registro a tabela
   replace codbarra with cbarra  // Adciona o código de barra ao arquivo

   // Loop 2
   
   sele tab2    // Seleciona a tabela 2 (aquela que estará vazia)
   achareg=0  // Controlador de loop
   do while achareg=0   // Fica no loop até que não tenha nada no arquivo
        inkey(.2)   // Aguarda 2 décimos de segundo entre checagens
        achareg=lastrec()   // Pega o total de registros no arquivo
   enddo   // Fim do segundo loop
   zap  // Para limpar para que na próxima o arquivo esteja vazio
enndo  // Fim do Loop principal que controla tudo


Abaixo segue o código sem comentários para facilitar sua compreensão.


do while .t.
   cbarra=space(6)
   leitura=.f.   // Variável de controle de leitura

   do while leitura=.f.
      inkey(.2)
      cbarra=monitora()
      if cbarra<>space(6)
         exit //
      endif
   enddo

   sele tab1
   dbappend()
   replace codbarra with cbarra

   sele tab2
   achareg=0
   do while achareg=0
        inkey(.2)
        achareg=lastrec()
   enddo
   zap
enndo
Espero que possa compreender a lógica, o que você quer fazer é bem simples.

Óbviamente que neste código ainda faltam alguns controles, mas estes você basta ir incorporando.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Responder