Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problemas ao script detectar erro


Guilherme Teixeira

Pergunta

Olá amigos boa tarde,

é o seguinte:

<%

if bim1.Fields.Item("Nota3").value = "O" or bim1.Fields.Item("Nota3").value = "Ótimo" then
nota3=30
else if bim1.Fields.Item("Nota3").value = "MB" or bim1.Fields.Item("Nota3").value = "Muito bom" then
nota3=28
else if bim1.Fields.Item("Nota3").value = "B" or bim1.Fields.Item("Nota3").value = "Bom" then
nota3=26
else if bim1.Fields.Item("Nota3").value = "R" or bim1.Fields.Item("Nota3").value = "Regular" then
nota3=23
else if bim1.Fields.Item("Nota3").value = "*" then
nota3=0 
else
On Error resume Next
cdbl(bim1.Fields.Item("Nota3").value)
If Err.number<>0 then
Materia = bim1.Fields.Item("Materia Listar").value
valor = bim1.Fields.Item("Nota3").value
strMsg = "Verifique a nota de "&materia&" do 3º Bimestre. A existência de caracteres diferentes de O, MB, B, R, *, números decimais com separador que não seja vírgula ou estes caracteres juntos com espaço impedem a elaboração do boletim! A nota atual é: "&valor
Response.Write "<script>alert('" & strMsg & "');window.close();</script>"
else nota3 = FormatNumber(cdbl(bim1.Fields.Item("Nota3").value),2)
end if
end if
end if
end if
end if
end if

%>

Este código criei para diferenciar notas de Educação Fisica, que são usadas letras ao invés de numeros, então ele pega as letras e converte em uma nota, para que depois no final eu possa calcular uma média e atribuir uma letra (nota final) para o aluno, mas se a nota do aluno não for letras como aquela o valor do campo que é texto do bd do access eu uso o cdbl para converter em numero decimal (tipo: 23,21), para depois calcular a nota final normalmente, porém as secretarias as vezes falham ao digitar as notas, digitam por exemplo 23,,11 o que o cdbl não aceita, então quis usar o "On Error" para identificar a falha e em um alert mostra que matéria está o erro, para que as secretarias possam saber onde consertar o erro, porém ao executar esse código, por Educação Física tudo funciona normal, mais quando chega em uma nota toda hora ele executa o ALERT, mesmo a nota estando correta!

Alguém poderia me dar alguma dica?

Obrigado!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Cara, o código tá meio mal organizado...

Primeiramente, concerta seus "if's" e "elseif"

Ao invés de "else if", utilize "elseif" (dessa forma não precisará encher de "end if" no final)

Depois de concertar o código, posta aí, pois facilita a leitura

Aperentemente, não há erro no código

Verifique o tipo de dados contidos no banco de dados

Link para o comentário
Compartilhar em outros sites

  • 0

Ai pronto!

<%
' verifica se as notas são: O ou Ótimo, MB ou Muito Bom ou B ou Bom, R ou Regular, para atribuir os valores para calcular a média final
if bim1.Fields.Item("Nota3").value = "O" or bim1.Fields.Item("Nota3").value = "Ótimo" then
nota3=30
elseif bim1.Fields.Item("Nota3").value = "MB" or bim1.Fields.Item("Nota3").value = "Muito bom" then
nota3=28
elseif bim1.Fields.Item("Nota3").value = "B" or bim1.Fields.Item("Nota3").value = "Bom" then
nota3=26
elseif bim1.Fields.Item("Nota3").value = "R" or bim1.Fields.Item("Nota3").value = "Regular" then
nota3=23
elseif bim1.Fields.Item("Nota3").value = "*" then
nota3=0 
' se as notas não forem de educação fisica que assumem as letras, pega o valor e converte em numeros decimal e verifica se há algum erro ao converter
else
On Error resume Next
cdbl(bim1.Fields.Item("Nota3").value)
If Err.number<>0 then
Materia = bim1.Fields.Item("Materia Listar").value
valor = bim1.Fields.Item("Nota3").value
strMsg = "Verifique a nota de "&materia&" do 3º Bimestre. A existência de caracteres diferentes de O, MB, B, R, *, números decimais com separador que não seja vírgula ou estes caracteres juntos com espaço impedem a elaboração do boletim! A nota atual é: "&valor
Response.Write "<script>alert('" & strMsg & "');window.close();</script>"
else nota3 = FormatNumber(cdbl(bim1.Fields.Item("Nota3").value),2)
end if
end if
%>

Mais tipo os erros não estão nos if's, mais no fato de acusar, mesmo as notas certas que estão erradas! Ou seja, toda hora, mesmo com a nota digitada corretamente, mostra o ALERT!

Link para o comentário
Compartilhar em outros sites

  • 0

Achei um erro nessa parte aqui:

cdbl(bim1.Fields.Item("Nota3").value)
A instrução está solta (você não pode usar o cdbl solto) Acho que você queria fazer algo assim:
nota3 = cdbl(bim1.Fields.Item("Nota3").value)
Se funcionar posta aí, pode ajudar outras pessoas com o mesmo problema Elaborei um script pra você aqui (não cheguei a testar) É mais ou menos assim:
<%
' verifica se as notas são: O ou Ótimo, MB ou Muito Bom ou B ou Bom, R ou Regular, para atribuir os valores para calcular a média final
if bim1.Fields.Item("Nota3").value = "O" or bim1.Fields.Item("Nota3").value = "Ótimo" then
    nota3=30
elseif bim1.Fields.Item("Nota3").value = "MB" or bim1.Fields.Item("Nota3").value = "Muito bom" then
    nota3=28
elseif bim1.Fields.Item("Nota3").value = "B" or bim1.Fields.Item("Nota3").value = "Bom" then
    nota3=26
elseif bim1.Fields.Item("Nota3").value = "R" or bim1.Fields.Item("Nota3").value = "Regular" then
    nota3=23
elseif bim1.Fields.Item("Nota3").value = "*" then
    nota3=0 
' se as notas não forem de educação fisica que assumem as letras, pega o valor e converte em numeros decimal e verifica se há algum erro ao converter
else
    On Error GoTo Erro
    nota3 = FormatNumber(cdbl(bim1.Fields.Item("Nota3").value),2)

    Erro:
        Materia = bim1.Fields.Item("Materia Listar").value
        valor = bim1.Fields.Item("Nota3").value
        strMsg = "Verifique a nota de "&materia&" do 3º Bimestre. A existência de caracteres diferentes de O, MB, B, R, *, números decimais com separador que não seja vírgula ou estes caracteres juntos com espaço impedem a elaboração do boletim! A nota atual é: "&valor
        Response.Write "<script>alert('" & strMsg & "');window.close();</script>"
    end if
%>

Editado por Jonathan Queiroz
Link para o comentário
Compartilhar em outros sites

  • 0

Solucionei o problema! Vai aí o codigo de exemplo pra que ficar com as mesmas duvidas!

<%
' verifica se as notas são: O ou Ótimo, MB ou Muito Bom ou B ou Bom, R ou Regular, para atribuir os valores para calcular a média final
if bim1.Fields.Item("Nota3").value = "O" or bim1.Fields.Item("Nota3").value = "Ótimo" then
    nota3=30
elseif bim1.Fields.Item("Nota3").value = "MB" or bim1.Fields.Item("Nota3").value = "Muito bom" then
    nota3=28
elseif bim1.Fields.Item("Nota3").value = "B" or bim1.Fields.Item("Nota3").value = "Bom" then
    nota3=26
elseif bim1.Fields.Item("Nota3").value = "R" or bim1.Fields.Item("Nota3").value = "Regular" then
    nota3=23
elseif bim1.Fields.Item("Nota3").value = "*" then
    nota3=0
' se as notas não forem de educação fisica que assumem as letras, pega o valor e converte em numeros decimal e verifica se há algum erro ao converter
else
   On Error Resume Next
    nota3 = FormatNumber(cdbl(bim1.Fields.Item("Nota3").value),2)
    if err.number = 0 then
nota3 = FormatNumber(cdbl(bim1.Fields.Item("Nota3").value),2) 
          else
        Materia = bim1.Fields.Item("Materia Listar").value
        valor = bim1.Fields.Item("Nota3").value
        strMsg = "Verifique a nota de "&materia&" do 3º Bimestre. A existência de caracteres diferentes de O, MB, B, R, *, números decimais com separador que não seja vírgula ou estes caracteres juntos com espaço impedem a elaboração do boletim! A nota atual é: "&valor
        Response.Write "<script>alert('" & strMsg & "');window.close();</script>"
        end if
        end if
%>

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

É, o código tá certo, mas tem uma parte que você pode tirar

Olha isso aqui:

On Error Resume Next
    nota3 = FormatNumber(cdbl(bim1.Fields.Item("Nota3").value),2)
    if err.number = 0 then
nota3 = FormatNumber(cdbl(bim1.Fields.Item("Nota3").value),2)
    else
            'Mais código
Você podia fazer somente isso:
On Error Resume Next
    nota3 = FormatNumber(cdbl(bim1.Fields.Item("Nota3").value),2)
    if not (err.number = 0) then
            'Mais código

Qualquer coisa é só postar !

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...