Tenho uma rotina que faz uma consulta e retorna se o limite cadastrado no campo da tabela clientes foi estourado, porém analisando o procedimento o correto seria a cada lançamento feito no programa aparecer uma caixa de alerta dizendo se o limite estourou, e em seguida quando for teclado ENTER o sistema continuar com os lançamentos na conta independente do estouro de limite.
1ª duvida ) na apostila que tenho e uso não achei muta coisa a repeito do alert , como faço para dizer em qual linha e coluna a caixa deve aparecer ?
2º duvida ) Tentei juntar os fontes para fazer o procedimento acima funcionar, depois de muitas e muitas tentativas cheguei em um ponto onde após o lançamento o sistema fica somando os valores a vida inteira. Não estou conseguindo ver onde meu DO WHILE está errado, ou se o problema é em outro lugar do fonte, seguindo a apostila que tenho parece que o mesmo foi finalizado certo.
Coloco abaixo o fonte, e desde já agradeço pela atenção.
Código: Selecionar todos
USE MOVIM INDEX IMOVIM,IMOVDOC,IMOVCON
SELECT 2
USE CLIENTES INDEX ICLIENTE
SELECT 3
USE HISTOR INDEX IHISTOR
mlimite = 0.00
mlinha = 7
msal_ini = 0.00
SELECT 2
msal_ini = SAL_INI
mdat_sal = DAT_INI
SELECT 1
DO WHILE mconta = CONTA .AND. DATA < mdata .AND. .NOT. EOF()
IF CT < 10
msal_ini = msal_ini - VALOR
ELSE
msal_ini = msal_ini + VALOR
ENDIF
mdat_sal = DATA
SKIP
ENDDO
DO WHILE .T.
SELECT 1
DO WHILE mconta = CONTA .AND. .NOT. EOF()
mdat_sal = DATA
mct = CT
SELECT 3
SEEK mct
IF EOF()
CLOSE ALL
RETURN
ENDIF
SELECT 1
IF CT < 10
msal_ini = msal_ini - VALOR
ELSE
msal_ini = msal_ini + VALOR
ENDIF
IF msal_ini < 0.00
@mlinha,55 SAY -msal_ini PICTURE '9,999,999,999.99D'
ELSE
@mlinha,55 SAY msal_ini PICTURE '9,999,999,999.99C'
ENDIF
ENDDO
ENDDO
ENDDO
SELECT 2
IF -msal_ini > LIMITE
ALERT (" LIMITE ESTOURADO !!! ")
ENDIF
CLEAR
CLOSE ALL
RETURNFonte inclusão de lançamentos
Código: Selecionar todos
CLEAR
mconta = SPACE(5)
mct = 0
mdoc = SPACE(10)
mdata = CTOD('01/01/00')
mdat_emi = CTOD(' / / ')
mvalor = 0.00
mresp = SPACE(1)
DO WHILE mdata # DATE()
@15,2 SAY 'DATA DO MOVIMENTO'
@15,24 GET mdata PICTURE ' / / '
READ
IF mdata # DATE()
@24,1 SAY 'DATA NAO CONFERE'
WAIT ', ENTER'
CLEAR
ENDIF
ENDDO
USE MOVIM INDEX IMOVIM,IMOVDOC,IMOVCON
SELECT 2
USE CLIENTES INDEX ICLIENTE
SELECT 3
USE HISTOR INDEX IHISTOR
SELECT 4
USE DATAS
GO BOTTOM
IF mdata > DATA_MOVIM
APPEND BLANK
REPLACE DATA_MOVIM WITH mdata
ENDIF
USE
DO CCCABP10
DO WHILE .T.
@7,0 CLEAR
@7,0 TO 22,79 DOUBLE
@6,10 SAY 'INCLUSAO DE MOVIMENTO'
@6,32 SAY 'DE '
@6,35 SAY mdata PICTURE ' / / '
@23,3 SAY 'INFORME 99999 NO CODIGO PARA ENCERRAR'
@9,2 SAY 'CODIGO DO CORRENTISTA'
@9,24 GET mconta
READ
IF mconta = '99999'
EXIT
ENDIF
IF mconta = '99998'
@24,1 SAY 'ESTA CONTA NAO ACEITA INCLUSAO'
WAIT ', ENTER PARA CONTINUAR'
CLEAR
DO CCCABP10
LOOP
ENDIF
SELECT 2
SEEK mconta
IF EOF()
@24,1 SAY 'CONTA NAO CADASTRADA'
WAIT ', ENTER'
CLEAR
DO CCCABP10
LOOP
ENDIF
IF DESATIVADA = 'S'
@24,1 SAY 'CONTA DESATIVADA'
WAIT 'ENTER'
CLEAR
DO CCCABP10
LOOP
ENDIF
mdat_atu = DAT_ATU
@9,36 SAY NOME
@11,2 SAY 'CODIGO DE TRANSACAO'
@11,24 GET mct PICTURE '99'
READ
IF mct = 21
LOOP
ENDIF
SELECT 3
SEEK mct
IF EOF()
@24,1 SAY 'CODIGO NAO CADASTRADO'
WAIT ', ENTER'
CLEAR
DO CCCABP10
LOOP
ENDIF
@11,36 SAY HISTORICO
@13,02 SAY 'DATA EMISSAO'
mdat_emi = mdata
@13,24 GET mdat_emi
@15,2 SAY 'DOCUMENTO'
@15,24 GET mdoc
READ
IF mdat_emi <= mdat_atu
@24,1 SAY 'JA EMITIMOS EXTRATO ALEM DESTA DATA'
WAIT ', ENTER'
CLEAR
DO CCCABP10
LOOP
ENDIF
@17,2 SAY 'VALOR'
@17,24 GET mvalor PICTURE '9,999,999,999.99'
READ
@21,3 SAY 'CONFIRME -> S'
@21,24 GET mresp
READ
IF mresp # 'S'
LOOP
ENDIF
SELECT 1
APPEND BLANK
REPLACE CONTA WITH mconta
REPLACE CT WITH mct
REPLACE DOC WITH mdoc
REPLACE DATA WITH mdat_emi
REPLACE DAT_LANC WITH mdata
REPLACE VALOR WITH mvalor
SELECT 2
IF mct < 11
REPLACE SAL_ATU2 WITH SAL_ATU2 - mvalor
ELSE
REPLACE SAL_ATU2 WITH SAL_ATU2 + mvalor
ENDIF
mct = 0
mdoc = SPACE(10)
mvalor = 0.00
@7,1 CLEAR

