Página 1 de 1

Erro exibir ALERT

Enviado: 08 Set 2011 17:25
por raquelreis
Pessoal Boa Tarde, parece simples. Porém não estou conseguindo "parar" minha rotina e exibir um simples alerta de conclusão :( .

Segue Código:

Código: Selecionar todos

SET DELE ON  
CLS     
** --- Variáveis --- ** 
p1 := p2 := SPACE(12)
pRESP := SPACE(1) 
p1COR := p1TAM := NIL
p1ESTATUAL := 0

WHILE .T.

@ 03,02 TO 20,75

@ 05,15 SAY "MUDAR O CODIGO ----------> " GET P1 PICT "@!" VALID !EMPTY(P1)
@ 07,15 SAY "PARA O CODIGO -----------> " GET P2 PICT "@!" VALID !EMPTY(P2)
@ 09,15 SAY "Confirma Alteracao (S/N) ? " GET pRESP PICT "@!" VALID(pRESP$"SN")
READ
INKEY(0)
 IF LASTKEY()=27 .AND. pRESP = "N"
   CLOSE ALL
   CLS
   RETURN 
ELSE

*   ////////////////
*  // CADPOS.DBF //
* ////////////////  
  * // Alteração Quando já existir o P2 atualizar o estoque  
 
  USE CADPOS
  INDEX ON CODIGO TO CADPOS3
  
  CLOSE CADPOS
  USE CADPOS
  SET INDEX TO CADPOS3.NTX

  CONTA := 1

  @ 12,12 SAY "Aguarde um momento... Atualizando CADPOS.DBF !!!"

  while .T.
   @ 13,28 SAY CONTA
 SET ORDER TO 3
 SEEK P1 
 IF !FOUND()   
  close all
  cls
  return
 else       
    p1COR := COR 
    p1TAM := TAMANHO 
    p1ESTATUAL := ESTATUAL 
    lParidade := .F. 
    SEEK P2 
      IF FOUND() 
        WHILE CODIGO = P2 
          IF COR = p1COR .AND. TAMANHO = p1TAM 
            REPL ESTATUAL WITH ESTATUAL + p1ESTATUAL 
            lParidade := .T.
            CONTA++                       
          ENDIF
         SKIP
         ENDDO                
      ENDIF 
    SEEK P1
      IF lParidade = .F. 
        REPL CODIGO WITH P2
        CONTA++ 
         SKIP;LOOP 
      ELSE 
        DELE 
      ENDIF
  endif
  loop
 ENDDO       
* --- Fim CADPOS 
  DBCOMMITALL()

  ALERT("* * * ROTINA REALIZADA COM SUCESSO! * * * ")
  ALERT("ATENCAO=>Ao entrar no sistema, INDEXAR todos os arquivos!")                    
ENDIF

inkey(0)
CLOSE ALL
CLS
RETURN
ENDDO 


Obrigada à todos!

Erro exibir ALERT

Enviado: 08 Set 2011 17:32
por Pablo César
No seu código você possui 2 "loop" nas linhas 68 e 73, na minha opinião são desnecessários por causa do laço de repetição WHILE .t. também não entendí a sua necessidade dp SKIP...

Sugiro você compilar com opção /B e debugar através do CLD pra ver passo a passo o funcionamento do seu código.

Erro exibir ALERT

Enviado: 09 Set 2011 17:18
por Maurício Elias
Olá, boa tarde.

Não cheguei a testar, mas acho q no Alert, vc tem q passar o segundo parâmetro, que seria o botão. Vc tá passando só a mensagem.

Abraços.

_______
Maurício

Erro exibir ALERT

Enviado: 09 Set 2011 18:17
por alxsts
Olá!

Deve ser por outra razão...

Alert() recebe três parâmetros, sendo que o segundo e o terceiro são opcionais.

Código: Selecionar todos

Alert( cMensagem, [aOpções], [cCor])

Erro exibir ALERT

Enviado: 11 Set 2011 10:03
por Jairo Maia
Olá Raquel,

Vc alterou pakas o código, fez coisas que exigiram gambiarra, como o INKEY(0) na linha 17, pq vc deixou a atualização das variáveis de campo fora do laço que vc criou dentro do que já existia. Bom, sobre os LOOPS o colega Pablo já falou, mas não vou entrar nessa questão, vamos nos ater apenas ao porque o ALERT não está sendo exibido:

Coloque a mensagem que vc deseja exibir, antes do LOOP que vc colocou na linha 73.

NOTA: Se vc manter o LOOP na linha 68, se lParidade for .f., a mensagem não será exibida, pq o sistema não vai passaar pela mensagem. Pode remover esse LOOP com segurança. Veja que existe a condicional IF, assim, se uma condição for atendida a outra não é executada. Sem medo, exclua esse LOOP, ou não vai funcionar, salvo se vc colocar a mensagem também antes da linha 68.

NOTAS:
1- Você está trabalhando apenas com o indice CADPOS3, mas na linha 42 vc seleciona o indice da área 3. No Clipper não tem problema. Mas tenha em mente que se futuramente vc vier a trabalhar com Harbour ou xHarbour, vc terá a mensagem: "WORK AREA NOT INDEXED".

Remova o inkey(0) da linha 82. Ele não tem sentido ai. Creio que foi uma tentativa de parar para exibir o alert.

Erro exibir ALERT

Enviado: 12 Set 2011 15:29
por raquelreis
Boa tarde à todos!
Agradeço a ajuda de todos vcs. O código não é meu. Fiz sim modificações. Concordo inteiramente sobre "gambiarras".
O "INKEY(0)" nem sei ao certo para que ele está ai. Já o retirei.
Sobre os loops e skips já retirei. Porém me ALERT ficou exibindo a cada loop. Quero que o exiba apenas no fim da rotina.
Jairo Maia escreveu:Você está trabalhando apenas com o indice CADPOS3
O código que postei não está completo. É apenas uma parte. Na mesma rotina trabalho com mais 5 arquivos dbf e mais alguns indices. Ao retirar a parte que postei, meus alertas funcionam.