relatórios em rede
Enviado: 01 Ago 2004 16:45
como gerar relatórios em rede sem que uma estação interfira em outra?
Código: Selecionar todos
STATIC PROCEDURE CorReg()
LOCAL xcTela := SAVESCREEN(01,00,23,79)
*
TelaOp()
HoraData()
Funcao(3)
*
MostraVarMem()
*
cCorreto := "N"
WHILE (cCorreto <> "S")
WHILE .T.
HoraData()
SETCOLOR(cCor3)
Centro(24,"*** DIGITE O CODIGO DA OPERACAO ***")
SET CURSOR ON
cCo := cCodOp
SETCOLOR(cCor2)
@ 12,14 GET cCo PICTURE '@R 9.99'
READ
SET CURSOR OFF
IF EMPTY(cCo)
RETURN
END
*
IF LEN(ALLTRIM(cCo)) <> 3 && 9.99
LOOP
END
*
IF (cCo <> cCodOp)
SELECT OPERACAO
SET ORDER TO 1
GOTO TOP
SEEK CD(cCo)
IF FOUND()
Beep(1)
SETCOLOR(cCor5)
Mensagem("*** CODIGO DA OPERACAO EXISTENTE ***")
SETCOLOR(cCor2)
cCo := SPACE(03)
LOOP
END
END
cCodOp := cCo
@ 12,14 SAY cCodOp PICTURE '@R 9.99'
EXIT
END && WHILE .T.
*
WHILE .T.
HoraData()
SETCOLOR(cCor3)
Centro(24,"*** DIGITE A OPERACAO ***")
SET CURSOR ON
cO := cOperacao
SETCOLOR(cCor2)
@ 12,20 GET cO PICTURE '@!'
READ
SET CURSOR OFF
IF EMPTY(cO)
RETURN
END
*
cO := ALLTRIM(cO)
nTamOp := LEN(cO)
*
IF SUBSTR(cCodOp,2,2) == "00"
IF nTamOp<40
cO := cO + REPLICATE("-",40-nTamOp)
END
ELSEIF SUBSTR(cCodOp,2,2) <> "00"
IF nTamOp<40
cO := cO + REPLICATE(".",40-nTamOp)
END
END && SUBSTR(cCodOp,2,2) == "00"
*
@ 12,20 SAY cO PICTURE '@!'
*
IF (cO <> cOperacao)
SELECT OPERACAO
SET ORDER TO 2
GOTO TOP
SEEK CD(cO)
IF FOUND()
Beep(1)
SETCOLOR(cCor5)
Mensagem("*** OPERACAO EXISTENTE ***")
SETCOLOR(cCor2)
cO := SPACE(40)
LOOP
END
END
cOperacao := cO
@ 12,20 SAY cOperacao PICTURE '@!'
EXIT
END && WHILE .T.
*
IF SUBSTR(cCodOp,2,2) == "00" && 1.00, 2.00, 3.00 ...
cEntSai := "-"
ELSEIF SUBSTR(cCodOP,2,2) <> "00" && 1.01, 2.01, 3.01 ...
HoraData()
SETCOLOR(cCor3)
Centro(24,"*** DIGITE: 'E' ENTRADA 'S' SAIDA ***")
SETCOLOR(cCor2)
SET CURSOR ON
@ 12,63 GET cEntSai PICTURE '!' VALID(cEntSai $ "ES")
READ
SET CURSOR OFF
END && IF SUBSTR(cCodOp,2,2) == "00" && 1.00, 2.00, 3.00 ...
*
CLEAR GETS
*
MostraVarMem()
*
HoraData()
SETCOLOR(cCor3)
Centro(24,"DADOS CORRETOS (S/N)? ")
SET CURSOR ON
SETCOLOR(cCor2)
Confirma(24,COL(),@cCorreto)
SET CURSOR OFF
SETCOLOR(cCor0)
*
END && cCorreto
*
WHILE .T.
*
HoraData()
SETCOLOR(cCor4)
Centro(24,"A G U A R D E . . .")
SETCOLOR(cCor0)
*
SELECT OPERACAO
SET ORDER TO 0
GOTO nRegistro
IF Trava_Reg(10)
*
GravaVarArq()
*
COMMIT
UNLOCK && CANCELA BLOQUEIO
*
ELSE
Beep(1)
SETCOLOR(cCor5)
Mensagem("*** NAO FOI POSSIVEL A CORRECAO DESTE REGISTRO ***")
SETCOLOR(cCor0)
HoraData()
cTentar := SPACE(01)
SETCOLOR(cCor3)
Centro(24,"DESEJA TENTAR CORRIGIR ESTE REGISTRO NOVAMENTE (S/N)? ")
SET CURSOR ON
SETCOLOR(cCor2)
Confirma(24,COL(),@cTentar)
SET CURSOR OFF
SETCOLOR(cCor0)
IF cTentar == "S"
LOOP
END
END
EXIT
END && WHILE .T.
*
RESTSCREEN(01,00,23,79,xcTela)
RETURN
***
Código: Selecionar todos
FUNCTION Trava_Reg(nTentativa)
LOCAL lSempre
IF RLOCK()
RETURN (.T.) && TRAVADO ...
END
lSempre := (nTentativa == 0)
WHILE (lSempre .OR. nTentativa > 0) && .AND. INKEY() <> 27
IF RLOCK()
RETURN (.T.) && TRAVADO ...
END
INKEY(.5) && TENTATIVAS 1/2 SEGUNDO ...
nTentativa := nTentativa - .5
END
RETURN (.F.) && NAO TRAVADO ...
***