Atributo onkeyup em HTML/ASP

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Atributo onkeyup em HTML/ASP

Mensagempor NetSynnas » Sexta Dez 17, 2004 12:58

Estou com uma dificuldade, que é a seguinte:

Tenho uma página em HTML/ASP, na qual queria que, ao introduzir letras/texto numa textbox, ele fosse actualizando um recordset (lido de uma BD em SQL)... Por exemplo, introduzo o "a", ele actualiza o rst e lista todos os produtos começados por "a", e por aí fora...

Como posso fazer isto, sabendo que estou a utilizar linguagem vbscript?

P.S.: Espero ter-me feito entender... Não sou grande espiga em programação! :oops:
NetSynnas
Membro de Ouro
Membro de Ouro
 
Mensagens: 723
Registado: Segunda Nov 17, 2003 14:43

Mensagempor NetSynnas » Sábado Dez 18, 2004 1:53

Pessoal, ninguém pode dar uma ajudinha? Nem um linkzinho? :roll:

P.S.: Se tiverem qualquer tipo de receio por colocar aqui algum código, por ter medo de errar ( :idea: ), mande PM... Eu aceito! :lol:
NetSynnas
Membro de Ouro
Membro de Ouro
 
Mensagens: 723
Registado: Segunda Nov 17, 2003 14:43

Mensagempor alfatek » Sábado Dez 18, 2004 2:01

Em HTML/ASP não é possível fazer o que pretendes. O ASP é server-side, isto é, é executado no servidor. Quando estás a escrever num textfield não há comunicação entre cliente - servidor. Só quando o formulário é enviado é que isso acontece.

O que pretendes terá de ter ajuda de uma linguagem que corra no browser, client-side... Por exemplo JavaScript, o que normalmente nunca dá grandes resultados.
alfatek
Administrador
Administrador
 
Mensagens: 3257
Registado: Sábado Abr 06, 2002 18:28
Localização: Coimbra

Mensagempor NetSynnas » Sábado Dez 18, 2004 2:57

alfatek Escreveu:Em HTML/ASP não é possível fazer o que pretendes. O ASP é server-side, isto é, é executado no servidor. Quando estás a escrever num textfield não há comunicação entre cliente - servidor. Só quando o formulário é enviado é que isso acontece.

O que pretendes terá de ter ajuda de uma linguagem que corra no browser, client-side... Por exemplo JavaScript, o que normalmente nunca dá grandes resultados.

Engraçado! Disseram-me que com este atributo (onKeyUp) conseguia fazer isso... Cada vez que se introduzia uma letra ele lia no servidor e retornava o recordset... Penso!

Vou ver melhor isto! Obrigado na mesma! De qualquer maneira, caso arranje solução, eu posto por aqui! :wink:
NetSynnas
Membro de Ouro
Membro de Ouro
 
Mensagens: 723
Registado: Segunda Nov 17, 2003 14:43

Mensagempor Dr » Sábado Dez 18, 2004 5:31

Como disse o alfatek, e muito bem, precisas de uma linguagem client-side. O JavaScript tem muitas funções de acesso a BD. Procura um bom manual de JavaScript que deves conseguir safar-te.
Cumprimentos.
João Ribeiro
Dr
Membro de Ouro
Membro de Ouro
 
Mensagens: 903
Registado: Quarta Jan 21, 2004 3:50
Localização: Porto

Mensagempor NetSynnas » Terça Dez 21, 2004 16:35

Felizmente, consegui fazer o que queria... Aqui fica a versão 1.0 do ficheiro (ainda precisa de ajustes, mas o fundamental está feito):
<html>
<head>
</head>
<body>
<form name="frm" method="post">
<div align="center">
<p align="left">
<%
Dim cn, rst, lngProduto, intGravar, intEliminar, intActualiza
intGravar = Request.QueryString("intGravar")
lngProduto = 1'Request.QueryString("CodProd")
'intOpcao = Request.QueryString("CodOpcao")
Set cn= CreateObject("adodb.connection")
Set rst = CreateObject("adodb.recordset")
cn.open Application("cn")

if intGravar <> "" then
response.Write("spProdutosOpcoes @Action='I',@idProduto=" & lngProduto & ",@idOpcao=" & Request.form("chkInserir"))
response.End()
cn.execute "spProdutosOpcoes @Action='I',@idProduto=" & lngProduto & ",@idOpcao=" & Request.form("chkInserir")
Response.Redirect("ProdOpcoes.asp?CodProd=" & lngProduto)
end if
%>
<p align="center">
<input name="txtNome" type="text">
<p align="center">
<%

intActualiza = Request.QueryString("intActualiza")
if intActualiza <> "" then
'response.Write("spProdutos @Action='LO',@stringNome='" & Request.form("txtNome") & "'")
'response.End()
rst.open "spProdutos @Action='LO',@stringNome='" & Request.form("txtNome") & "'",cn
%>

<table width="50%%" border="1" align="center" cellspacing="0" cellpadding="0">
<tr>
<td width="60%" bgcolor="#31649d"><span class="style1">Descri&ccedil;&atilde;o</span></td>
<td width="25%" bgcolor="#31649d"><div align="center">
<input type="button" name="cmdInserir" id="cmdInserir" value="Inserir" style="width:100%">
</div></td>
</tr>
<%while not rst.eof%>
<tr>
<td><%=rst("Nome")%></td>
<td><div align="center">
<input name="chkInserir" type="checkbox" value="<%=rst("CodProd")%>">
</div></td>
</tr>
<% rst.movenext
wend%>
</table>

<%end if%>
</div>
</form>
</body>
</html>

<script language=vbscript>
function window_onload
frm.txtNome.focus()
end function

function txtNome_onKeyup
frm.action="FraProdOpcoes.asp?intActualiza=1"
frm.submit()
end function

sub cmdInserir_onclick
frm.action="FraProdOpcoes.asp?CodProd=<%=lngProduto%>&intGravar=1"
frm.submit()
end sub
</script>

A sp (SQL) usada:
IF @Action='LO'
BEGIN
declare @strNomeProd as nvarchar(4000)
SET @strNomeProd='
SELECT top 20 Nome,CodProd
FROM Produtos
WHERE Nome LIKE ''' + @stringNome + '%'''
Exec sp_executeSQL @strNomeProd
END
NetSynnas
Membro de Ouro
Membro de Ouro
 
Mensagens: 723
Registado: Segunda Nov 17, 2003 14:43


Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 0 visitantes

cron