Ajuda "bug"
Enviado: 15 Ago 2011 16:30
Boa Tarde á todos.
Problemas se resolvem e outros aparecem, hehe.
Estou há cerca de 2 dias com o mesmo código (simples) porém não consigo fazer.
Já revisei a lógica e não acho erro (testei). Gostaria que vcs pudessem me ajudar.
Lembrando, sou nova em programação.
Problemas:
* Estou executando uma rotina (ajuda de Jairo) para mudar o codigo de um produto. Porém quando eu somo o estado de estoque, no primeiro campo encontrado ele soma 1(um) a mais. EX: produto001( estoque1 = 2 / estoque2 = 3, estoque2 = estoque2 + estoque1 = 5). Porém na minha rotina ele encontra 6. produto002 ( estoque1 = 4 / estoque2 = 3, estoque2 = estoque2 + estoque1 = 7). Como é possível?
* Se por exemplo, na minha tabela tem 3 produtos (001,002,003). Sendo 001 -> estoque = 0, cor = 2, tam = 0 / 002 -> estoque = 1, cor = 3, tam = 0 e 003 -> estoque = 2, cor = 5, tam = 0. Quando executo pela 1ª vez a rotina ele só muda o codigo dos campos que possuem estoque 0 (zero). Se eu executar pela 2ª vez ele muda o codigo dos outros produtos, porém no primeiro produto ele cai no problema descrito acima.
vcs tem ideia do que pode ser?
Desde já agradeço!
Problemas se resolvem e outros aparecem, hehe.
Estou há cerca de 2 dias com o mesmo código (simples) porém não consigo fazer.
Já revisei a lógica e não acho erro (testei). Gostaria que vcs pudessem me ajudar.
Lembrando, sou nova em programação.
Problemas:
* Estou executando uma rotina (ajuda de Jairo) para mudar o codigo de um produto. Porém quando eu somo o estado de estoque, no primeiro campo encontrado ele soma 1(um) a mais. EX: produto001( estoque1 = 2 / estoque2 = 3, estoque2 = estoque2 + estoque1 = 5). Porém na minha rotina ele encontra 6. produto002 ( estoque1 = 4 / estoque2 = 3, estoque2 = estoque2 + estoque1 = 7). Como é possível?
* Se por exemplo, na minha tabela tem 3 produtos (001,002,003). Sendo 001 -> estoque = 0, cor = 2, tam = 0 / 002 -> estoque = 1, cor = 3, tam = 0 e 003 -> estoque = 2, cor = 5, tam = 0. Quando executo pela 1ª vez a rotina ele só muda o codigo dos campos que possuem estoque 0 (zero). Se eu executar pela 2ª vez ele muda o codigo dos outros produtos, porém no primeiro produto ele cai no problema descrito acima.
vcs tem ideia do que pode ser?
Desde já agradeço!
Código: Selecionar todos
CLS
SET DELE ON
@ 5,2 Say "Aguarde... Criando indice Temporário."
USE CADPOS
INDEX ON CODIGO TO CADPOS3
CLOSE ALL
USE CADPOS
SET INDEX TO CADPOS1.NTX, CADPOS2.NTX, CADPOS3.NTX
CLS // limpa a tela
p1COR := p1TAM := p2COR := p2TAM := NIL
p1ESTATUAL := 0
@ 03,01 TO 11,51
P1 := P2 := SPACE(12)
pRESP := SPACE(2) //recebe confirmacao
@ 05,10 SAY "MUDAR O CODIGO ---------> " GET P1 PICT "@!" VALID !EMPTY(P1)
@ 07,10 SAY "PARA O CODIGO ----------> " GET P2 PICT "@!" VALID !EMPTY(P2)
@ 09,10 SAY "Confirma Alteracao (S/N) ?" GET pRESP PICT "@!" VALID !EMPTY(pRESP)
READ
IF LASTKEY()=27 .OR. pRESP = "N"
CLOSE ALL
CLS
RETURN
ENDIF
SET ORDER TO 3
SEEK P1
IF !FOUND()
ALERT( "ERRO! Código " + P1 + " Não encontrado!" )
ENDIF
WHILE CODIGO = P1
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.
ALERT("Código Alterado com sucesso!")
ENDIF
SKIP
ENDDO
ENDIF
SEEK P1
IF lParidade = .F.
REPL CODIGO WITH P2
ALERT("Código Alterado com sucesso!")
SKIP;LOOP
ELSE
DELE
ENDIF
loop
ENDDO
DBCOMMITALL()
CLOSE ALL
CLS
RETURN