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

Ajuda iniciante


Guest RProgram

Pergunta

Oi galera, estou quebrando a cabeça com algo que parece ser simples...

Tenho uma página (busca.asp) que envia o resultado para outra página de atualização (alterar_dados.asp) tá funcionando direito... mas se o usuário digita um valor inexistente no bd ou deixa em branco, dá erro.

Tentei adaptar um

<%
if rs.eof then 
%>
<font face="Verdana"><b>Nenhum registro encontrado!</b></font>
mas não sei como fazer...
<%
recebe = request.form("CLIENTE")
ID = Request.QueryString("ID")
enviado = Request.querystring("enviado")
Select Case enviado
Case "sim"
%>
<%
caminho ="dados/db.mdb"
Set conexao = CreateObject("ADODB.Connection")
abrir ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath(caminho)
conexao.open abrir
%>
<%
CLIENTE = replace(request.form("CLIENTE"), "'", "")
CPF = replace(request.form("CPF"), "'", "")
TELEFONE = replace(request.form("TELEFONE"), "'", "")
ENDERECO = replace(request.form("ENDERECO"), "'", "") 
OBSERVACAO = replace(request.form("OBSERVACAO"), "'", "")
set rs = conexao.execute("UPDATE TABELA SET CLIENTE ='" & CLIENTE & "',CPF ='" & CPF & "',TELEFONE ='" & TELEFONE & "',ENDERECO ='" & ENDERECO & "',OBSERVACAO ='" & OBSERVACAO & "' WHERE ID="& recebe &"")
%>



<head></head>
<body>
<font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#000000">Modificado com sucesso!</font><br><br>
</body>
<%
conexao.close
set conexao = nothing
%>


<%case else%>

<%
caminho ="dados/db.mdb"
Set conexao = CreateObject("ADODB.Connection")
abrir ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath(caminho)
conexao.open abrir
%>
<% set rs = conexao.execute("Select * FROM TABELA WHERE CLIENTE Like '"&recebe&"' OR ID Like '"&ID&"'")
%>



<html>
<head></head>
<body>
<p align="center">
<form action="alterar_dados.asp?enviado=sim&id=<%= rs("ID")%>" method="POST" name="modificar">
<div align="center">

<table width="567" cellspacing="1">
<tr>
<td colspan="2">
<font face="Arial, Verdana, Helvetica, sans-serif" size="2"></td></tr>
<tr>
<td width="94">CLIENTE:</td>
<td>
<input name="CLIENTE" type="text" size="9" value="<%= rs("CLIENTE") %>"></td>
</tr>
<tr>
<td width="94">CPF:</td>
<td>
<input name="CPF" type="text" size="60" value="<%= rs("CPF") %>"></td>
</tr>
<tr>
<td width="94">TELEFONE:</td>
<td>
<input name="TELEFONE" type="text" size="21" value="<%= rs("TELEFONE") %>"></td>
</tr>
<tr>
<td width="94">ENDERECO:</td>
<td>
<input name="ENDERECO" type="text" size="21" value="<%= rs("ENDERECO") %>"></td>
</tr>
<tr>
<td width="94">OBSERVACAO:</td><tr>
<td>
<input name="OBSERVACAO" type="text" size="59" value="<%= rs("OBSERVACAO") %>"></td></tr>
<tr>
<td width="94">
<td>
<input type="submit" value="Confirmar alteração">
</form>
</td>
</table></div></body></html>


<% end select %>

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0

Se deixar o campo de busca em branco ou digitando valor inexistente no bd, se eu digitar um dado existente ele me retorna funcionando e sem erro.

Tipo de erro:

ADODB.Field (0x80020009)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

não dá linha de erro...

Link para o comentário
Compartilhar em outros sites

  • 0

Vlw, é quase isso...

Não dá o erro e ele passa para a próxima etapa,

só que essa etapa pulada, é indispensável para a próxima.

Na verdade eu precisaria que desse um alerta, um response dizendo que o dado não existe ou está em branco.

Link para o comentário
Compartilhar em outros sites

  • 0

<%case else%>

<%

caminho ="dados/db.mdb"

Set conexao = CreateObject("ADODB.Connection")

abrir ="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath(caminho)

conexao.open abrir

%>

<% set rs = conexao.execute("Select * FROM TABELA WHERE CLIENTE Like '"&recebe&"' OR ID Like '"&ID&"'")

if rs.eof then

%>

<font face="Verdana"><b>Nenhum registro encontrado!</b></font>

<%

end if

end select

%>

Acredito que teria que ser assim... estou tentando dessa forma!

Mas aí dá...

Tipo de erro:

ADODB.Field (0x80020009)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara... faz o seguinte:

substitua o trecho da variavel recebe e id lá do inicio do seu codigo:

recebe = request.form("CLIENTE")
ID = Request.QueryString("ID")
por:
recebe = trim (request.form("CLIENTE"))
ID = trim (Request.QueryString("ID"))

poste aqui os resultados!

[]'s Rafael Spilki

Editado por Rafael Spilki
Link para o comentário
Compartilhar em outros sites

  • 0

Resultado é que parou de funcionar tudo, agora dá a mensagem mesmo digitando um valor válido.

ADODB.Field (0x80020009)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual

Não tem como condicionar esse "recebe"? acho que o problema pode estar nele.

Link para o comentário
Compartilhar em outros sites

  • 0

ôpa! tá dando certo... :)

<%
recebe = request.form("CLIENTE")
If recebe = "" Then
Response.Write "Não encontado!"
Response.End
end if
%>

faltava o Response.End

Então se a busca estiver vazia, exibe a mensagem...

Só mais uma coisa:

Agora como que eu faço, se a busca não encontrar dados cadastrados ou estiver vazia, exiba a mensagem?

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi a necessidade do response.end, todo caso sua alternativa é muito boa...

Bom, agora me explica uma coisa... quando o recebe estiver vazio sua busca será vazia e ele ira´dar essa mensagem acima, certo?

Então, a única coisa que podes precisar agora é recolocar aquele on error resume next no topo do codigo, evitando a exibição da mensagem de erro, ou seja, se recebe estiver vazio da mensagem de cima, e se consulta estiver vazia não da erro...

sacou?

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo, também não entendi bem o porque do Response.end, mas se não coloco dá erro!

Acredito que o código pára por alí e não dá loop, exibindo a mensagem.

Entendi, é um alternativa...

mas eu queria que desse uma mensagem para o usuário caso a busca estivesse errada.

com o on error resume next, ele não imprime e o usuário não saberia o que aconteceu.

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...