ME AJUDEM A DESCOBRIR O ERRO!
*PROGRAMA AGENDAR.PRG
CLEAR
USE PROD
SET INDEX TO AGENDAR.PRG
cASSUNTO :=SPACE(30)
nHORA :=SPACE(5)
nDATA :SPACE(8)
CLS
DO WHILE .T.
@ 7,56 SAY "ASSUNTO" GET cASSUNTO
@ 7,66 SAY "HORA" GET nHORA
@ 7,75 SAY "DATA" GET nDATA
RETSCREEN (4,0,20,79,TELA1)
RETURN
SET COLOR TO B
@22,60 SAY SPACE (17)
LOOP
READ
@ 22,15 SAY SPACE(60)
@ 22,15 SAY "CONFIRMA OS DADOS ACIMA?"
@ 22,42 prompt "SIM"
@ 22,48 PROMPT "NÃO"
MENU TO OP
@ 22,15 SAY SPACE(60)
IF OP=2
LOOP
ELSEIF= OP 1
APPEND BLANK
REPLACE ASSUNTO WITH cASSUNTO
REPLACE ASSUNTO WITH nHORA
REPLACE DATA WITH nDATA
@22,15 SAY "QUER CONTINUAR?"
@ 22,42 prompt "SIM"
@ 22,48 PROMPT "NÃO"
@ 22,15 SAY SPACE(60)
IF= OP 1
cASSUNTO =(0); nHORA =SPACE(5); nDATA =SPACE(8)
RETSCREEN (4,0,20,79,TELA1)
LOOP
ELSEIF PO=2
@ 22,15 SAY SPACE(15)
CLOSE DATABASE
ELSEIF
RETURN
ENDDO
- PESSOAL ISSO É UM PROGRAMA AGENDA POR FAVOR ME AJUDEM A ACHAR OS ERROS!
Não consegui descobrir qual é o erro?
Moderador: Moderadores
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Caro colega,
Primeiramente gostaria de pedir-te que todo código seja utilizado os recursos de edição do fórum (o botão "Code" para fontes), já com as devidas endentações do seu código que possibilitará entender melhor. Você utilizando endentações você mesmo irá conseguir detectar os erros graves que tem.
Para cada DO WHILE existe um ENDDO, para cada IF existe um ENDIF. Comece por aí. Feche o que ficou aberto. No inicio dos seus GETs existe um RETURN, não sei qual seria a finalidade disso, pois o RETURN irá sair fora daquele módulo (não faz sentido).
E também aceite outro conselho: quando postamos uma mensagem, tente ser objetivo, se está dando erro, coloque a mensagem de erro e especifique onde e quando ocorre o erro, é dizer, ocorre na compilação, na execução.
Percebo que você não tem muita familiaridade com programação, mas precisa manter uma certa ordem. Intentarei ajudá-lo mas precisa corrigir seu programa.
Primeiramente gostaria de pedir-te que todo código seja utilizado os recursos de edição do fórum (o botão "Code" para fontes), já com as devidas endentações do seu código que possibilitará entender melhor. Você utilizando endentações você mesmo irá conseguir detectar os erros graves que tem.
Para cada DO WHILE existe um ENDDO, para cada IF existe um ENDIF. Comece por aí. Feche o que ficou aberto. No inicio dos seus GETs existe um RETURN, não sei qual seria a finalidade disso, pois o RETURN irá sair fora daquele módulo (não faz sentido).
E também aceite outro conselho: quando postamos uma mensagem, tente ser objetivo, se está dando erro, coloque a mensagem de erro e especifique onde e quando ocorre o erro, é dizer, ocorre na compilação, na execução.
Percebo que você não tem muita familiaridade com programação, mas precisa manter uma certa ordem. Intentarei ajudá-lo mas precisa corrigir seu programa.
Editado pela última vez por Pablo César em 19 Fev 2008 10:55, em um total de 1 vez.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Ao entrar no WHILE já tem um RETURN?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Caro APO,
Eu tentei utilizar seu código, endentei-o e fiz algumas observações para você poder entender cada passo que você deu. Não interprete como lição alguma, só apenas como esclarecimento para que você possa compilar-lo e não perder o ânimo de programar (isso se é isso que voce deseja). Então dê uma olhada no seu código abaixo:
Claro que o código acima, ainda pode e deve ser melhorado, principalmente se esse aplicativo irá funcionar em rede. Daí terás que implementar as funções de tratamento. Mas para um início, acho que este aqui estão bom.
Eu tentei utilizar seu código, endentei-o e fiz algumas observações para você poder entender cada passo que você deu. Não interprete como lição alguma, só apenas como esclarecimento para que você possa compilar-lo e não perder o ânimo de programar (isso se é isso que voce deseja). Então dê uma olhada no seu código abaixo:
Código: Selecionar todos
*PROGRAMA AGENDAR.PRG
CLEAR // Tire isso
USE PROD /* Normalmente use o nome do DBF que sugira a sua finalidade
(neste caso deveria ser AGENDA.DBF)*/
// SET INDEX TO AGENDAR.PRG /* nao eh padrao voce dar o nome do indice como PRG,
pois PRG eh para programacao. Utilize a extensao NTX,
para o caso de precisar fazer procura no arquivo.
Se precisar, antes verifique se o arquivo existe.
Se nao existir crie o arquivo de indice antes desta
linha.*/
cASSUNTO :=SPACE(30)
nHORA :=SPACE(5) // nHora deveria ser cHora (porque eh do tipo caracter)
nDATA :SPACE(8) /* falta o sinal de igual e este campo deveria ser tipo DATA
nao tipo caracter. Entao faca assim: dData:= CTOD(" / / ")
CLS
DO WHILE .T.
@ 7,56 SAY "ASSUNTO" GET cASSUNTO
@ 7,66 SAY "HORA" GET nHORA // substitua nHora por cHora
@ 7,75 SAY "DATA" GET nDATA
// aqui falta um READ
RETSCREEN (4,0,20,79,TELA1) // voce salvou a tela na variavel TELA1 ?
RETURN // Tire isso
SET COLOR TO B
@22,60 SAY SPACE (17)
LOOP // Tire isso
READ // Tire isso
/* As linhas abaixo estao muito confusas. Permita-me inutilizar e substui-las
=============================================================================
@ 22,15 SAY SPACE(60)
@ 22,15 SAY "CONFIRMA OS DADOS ACIMA?"
@ 22,42 prompt "SIM"
@ 22,48 PROMPT "NÃO"
MENU TO OP
@ 22,15 SAY SPACE(60)
IF OP=2
LOOP
ELSEIF= OP 1
APPEND BLANK
REPLACE ASSUNTO WITH cASSUNTO
REPLACE ASSUNTO WITH nHORA
REPLACE DATA WITH nDATA
@22,15 SAY "QUER CONTINUAR?"
@ 22,42 prompt "SIM"
@ 22,48 PROMPT "NÃO"
@ 22,15 SAY SPACE(60)
IF= OP 1
cASSUNTO =(0); nHORA =SPACE(5); nDATA =SPACE(8)
RETSCREEN (4,0,20,79,TELA1)
LOOP
ELSEIF PO=2
@ 22,15 SAY SPACE(15)
CLOSE DATABASE
ELSEIF
RETURN
aqui faltou o ENDIF
=============================================================================
Considere as linhas acima substituída pelas linha seguintes: */
OP:=ALERT("Confirma os dados acima ?",{"Sim","Nao"})
IF LASTKEY()=27 // esta eh uma forma de sa¡da do seu DO WHILE
EXIT
ENDIF
IF OP=1
APPEND BLANK
REPLACE ASSUNTO WITH cASSUNTO
// REPLACE ASSUNTO WITH nHORA (ASSUNTO outra vez ? ir sobrepor o anterior)
REPLACE HORA WITH cHora
REPLACE DATA WITH dDATA
ENDIF
ENDDO
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.

