Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSouza

Mensagem de EOF

Recommended Posts

Gostaria de saber qual a "melhor prática" para exibir uma mensagem para avisar ao usuário que não existem registros disponíveis.

 

Estou usando ASP, mas até onde sei misturar código ASP com HTML não é uma boa ideia porque reduz a performance da página, certo?

 

Atualmente faço uma estrutura assim.

 

<%Aqui vai o meu recordset%>

 

<%If Not rs.EOF Then%>

 

---Aqui vai o HTML do conteúdo, campos, formulários e etc----

 

<%Else%>

 

--Aqui vai a "mensagem de erro", que é outro trecho HTML---

<%End if%>

 

Diante disso pergunto. Há outra(s) forma(s) de fazer isso sem comprometer o desempenho ou regras de programação??

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha assim

 

'cria sua conexao
call abreconexao

‘cria o recordset

Set rs=Server.CreateObject(“ADODB.Recordset”)
'cria a SQL, verificando se existe algum login com o que o user digitou
' e atribuimos a variavel varlogin

SQL=”SELECT * FROM login WHERE login=’”&varlogin&”‘”
'executa a SQL

rs.open SQL,conexao,1,3
'verifica se nao existe o dado,
' fazendo rs (o recordset criado = a eof(end of file) ou seja final do arquivo))
if rs.eof then
' se nao existir, exibe a mensagem ou redireciona para uma pagina
'onde tem a mensagem de erro
response.redirect(“logincli_form_treina.asp?msgeof=3″)
'senão
else
' aqui você continua seu code
'...
'...
'...

end if

set rs=nothing

call fechaconexao%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este artigo, um bom exemplo, muito didático

Compartilhar este post


Link para o post
Compartilhar em outros sites

minha opiniao é que perde-se performance ao misturar a programação server com o html, porém vale avaliar o seguinte:

1. O processamento da página vai ser tão grande a ponto de que frações de segundos façam diferença?

2. Sabendo que colocando o html escrito pelo lado do servidor ganha-se frações de segundos em desempenho, quanto tempo vai levar para desenvolver já que deve ser tratado toda a concatenação, aspas, etc. Sem contar que a manutenção para qualquer coisa torna-se uma 'aventura' quase sempre muito demorada.

3. O custo x beneficio valem o trabalho?

4. Não existiria algo que fosse mais eficaz e menos trabalhoso para manutenção? (neste caso julgo que a utilização de templates html trabalhando com FSO sejam melhores pois você vai abrir um arquivo, trabalhar somente com replace e jogar todo o conteudo no asp para que o servidor interprete tudo)

 

boa sorte na conclusão

Compartilhar este post


Link para o post
Compartilhar em outros sites

Podemos fazer assim também:

 

<%

call conexao

Set rs=Server.CreateObject(“ADODB.Recordset”)

SQL=”SELECT * FROM ..........
rs.open SQL,conexao,1,3

on error resume next
do while not rs.eof
resultados
rs.movenext
loop

if err > 0 then
coloca mensagem de erro!
end if

set rs=nothing

call fechaconexao%>
%>

 

Dessa forma a mensagem de erro pode ir na própria tela de uma busca por exemplo. De vez em quando uso assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu prefiro fazer o tratamento em caso de algum erro direto no code, tipo se não existir dados, eu gosto de redirecionar para a pagina onde houve a requisição, com um parametro na querystring, e nesta página recuperar o valor e em cima disso exibir a mensagem de erro, pois assim seu code fica mais seguro, evitando que outros usuário ou possiveis ataques sejam disparados mediante o código do erro gerado, e em alguns casos o On Error Resume Next, pode ocasionar um perda de desempenho

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu prefiro fazer o tratamento em caso de algum erro direto no code, tipo se não existir dados, eu gosto de redirecionar para a pagina onde houve a requisição, com um parametro na querystring, e nesta página recuperar o valor e em cima disso exibir a mensagem de erro, pois assim seu code fica mais seguro, evitando que outros usuário ou possiveis ataques sejam disparados mediante o código do erro gerado, e em alguns casos o On Error Resume Next, pode ocasionar um perda de desempenho

 

Concordo que cada um tem que escrever o código da forma que atende o seu objetivo, mas discordo quanto ao comando 'On Error Resume Next'. A perda de desempenho só acontece se o código for mal escrito com variáveis que não existem ou que não estão no lugar certo.

 

O 'On Error Resume Next', pode ser implementado principalmente para quem prefere debugar os erros sem que as mensagens de erro apareçam no site.

 

Ex:

 

If err = 0 Then
Response.Write "<b style='color:#FF0000;'>Funciona!</b>"
Else
Response.Write "Erro:<br> <b style='color:#FF0000;'>" & err.Description &"<br>"
Response.Write Err.Source &"<br>"
RESPONSE.WRITE "</b>"
response.End()
End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

e cai também naquela parte de deixar mais vulnerável, pois se alguem der um sessionmirror no servidor, ele saberá qual o erro gerado, por isso que falei para ter o controle do erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.