Ir para conteúdo

Arquivado

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

Jean Franceschi

Autocomplete + ASP

Recommended Posts

Fala gente...

 

Seguinte, meu problema aqui é simples... estou usando o autocomplete para encopntrar resultados exatos no BD pra cada opção... porém... se eu digitar no campo: a, vai aparecer coisas que tem no banco relacionadas ao "a"... mas se eu digitar duas vezes a: "aa", ele aparece tudo que tem no banco ao invés de não mostrar nada...

 

Não consegui achar a solução e ja revirei a net...

 

Segue o code:

 

Página que tem o formulário

<link href="../../Includes/AutoCompletar/Jquery.autocomplete.css" type="text/css" rel="stylesheet">
<script src="../../Includes/AutoCompletar/Jquery.autocomplete.js"></script>
<script type="text/javascript" language="javascript">

	$(document).ready(function(){

		$("#Tipo_De_Arquivo").focus().autocomplete("../../Includes/AutoCompletar/AutoComplete_Admin_Tipo_De_Arquivo.asp",{ 
				minChars: 0					//Número minimo de caracteres para aparecer
				, matchContains: true		//Sempre aparecer somente os que tem relação ao digitado
				, scrollHeight: 100			//altura da lista dos nomes
				, selectFirst: false		//vim como padrão o primeiro selecionado
				, noCache: true			//default is false, set to true to disable caching
		})

	})

</script>

 

Página que busca os valores:

Dim Valor : Valor = Trim(Replace(Request.QueryString("Valor"),"'","´",1))
Dim Mostragem
Call Abrir_Conexao_Geral
	Set Mostragem = Server.CreateObject("ADODB.Recordset")
		Mostragem.CursorLocation = 3
		Mostragem.CursorType = 0
		Mostragem.LockType = 1
		Mostragem.Open ("SELECT Tipo_De_Arquivo FROM Arquivos WHERE UPPER(Tipo_De_Arquivo) LIKE UPPER('%"& Valor &"%') AND Tipo_De_Arquivo IS NOT NULL GROUP BY Tipo_De_Arquivo ORDER BY Tipo_De_Arquivo"), Conexao_Geral

		If Not Mostragem.EOF Then
			Do While Not Mostragem.EOF
                Response.Write Mostragem("Tipo_De_Arquivo") &"|"& Mostragem("Tipo_De_Arquivo") & vbCrLf
			Mostragem.MoveNext
			Loop
		End If
		Mostragem.Close
	Set Mostragem = Nothing
Call Fechar_Conexao_Geral

 

O que eu queria é que se você digitar algo que não exista no banco, ele não mostre "tudo" que tem no banco...

Outro pequeno problema, como estou usando a contagem limite de caracteres (no autocomplete) com 0, a idéia seria ele listar tudo que existe no banco... porém ele mostra apenas 14 resultados (dos 21 existentes)... o arquivo.asp ta funcionando certinho e a pésquisa direta nele funciona sem problema...

 

Se você for direto no arquivo .asp e buscar por ?Valor= ele mostra tudo (os 21 registros)... se buscar por ?Valor=a ele mostra só os que tem a, se buscar por ?Valor=aa ele não mostra nada pq não tem registro com aa... mas quando o autocomplete busca, ele mostra tudo, mesmo que no banco não exista...

 

Exemplo: digitar a no campo, ele mostra 14 resultados (de 21 que tem a), mas se digitar aa ele mostra todos resultados, como se tivesse buscando o campo como vazio (que daí sim deveria mostrar tudo). É um erro estranho e não é problema com navegador, pq já ví na página do autor e testei e lá funciona, baixei inclusive o code dele do autocomplete.js e tbm continua dando o mesmo erro... nem sei mais o que fazer =\

 

Valeu aí gente =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um bom exemplo que coloquei no lab. de script, você pode usá-lo e alterar conforme sua necessidade.

 

no site do autor funciona normal ?

e usando o mesmo code ele gera esse erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

como crio um autocompletar? no asp + access.

nao sei nada a respeito a minha ideia é a pessoa digital a matricula e preencher a pagina html com as informações desta pessoa, ae caso precise alterar algo clico no botao atualizar e faz o update essa parte do update no banco eu sei fazer a consulta tbm sem fazer tudo em uma pagina .asp, mas nao sei fazer é esse consulta no banco autocompletar jogando direto no html

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem exemplo que postei , dá uma olhada no fórum

Compartilhar este post


Link para o post
Compartilhar em outros sites

vê no fórum e no artigos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rafael... Vamos por parte faz isso sem o ajax por enquanto depois quando estiver mais familiarizado você parte para o ajax fazendo sem o ajax tem mais o trabalho braçal mas funciona legal... como:

 

no campo matricula coloque o evento onblur e nele coloque uma função javascript assim:

<script>

function buscamatricula(nummatricula){

if (nummatricula !="") {

window.location = "amesmapagina.asp?buscamatricula=" + nummatricula

}

}

</script>

no mesmo campo coloque no value="<%=request("buscamatricula")%>"

 

no inicio desta mesma página coloque

 

<%

if request("buscamatricula") <> "" then

 

sql = "select * from tabela where matricula = " & request("buscamatricula")

 

'OBS estou considerando que o numero da matricula seja do tipo numero se for texto o que não está errado por que não faz conta com ele você tem que colocar o critério da sql entre apóstrofos veja o exemplo abaixo mas em outro lado a busca de campos com o tipo numéricos é mais rápida...

 

sql = "select * from tabela where matricula = '" & request("buscamatricula") & "'"

 

execute a sql ...

if rs.eof = false and rs.bof = false then

nome = rs("nome")

endereco = rs("endereço")

pai = rs("nomepai")

mae = ...

... assim vai

end if

rs.close

feche também o conexão depois set = nothing o rs e o "cn"

 

end if

%>

 

nos demais campos fora o da matricula por que já tem o value="<%=request("buscamatricula")%>" você colocará o value com as variáveis carregadas veja um exemplo:

 

<input type="text" name="matricula" onblur="buscamatricula(this.value);" value="<%=request("buscamatricula")%>">

<input type="text" name="nome" value="<%=nome%>">

 

essa rotina é que se a matricula não estiver cadastro você continua normalmente...

qualquer dúvida é postar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

me mande um email que passo os exemplos.

 

xanburzum@terra.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rafael... Vamos por parte faz isso sem o ajax por enquanto depois quando estiver mais familiarizado você parte para o ajax fazendo sem o ajax tem mais o trabalho braçal mas funciona legal... como:

 

no campo matricula coloque o evento onblur e nele coloque uma função javascript assim:

<script>

function buscamatricula(nummatricula){

if (nummatricula !="") {

window.location = "amesmapagina.asp?buscamatricula=" + nummatricula

}

}

</script>

no mesmo campo coloque no value="<%=request("buscamatricula")%>"

 

no inicio desta mesma página coloque

 

<%

if request("buscamatricula") <> "" then

 

sql = "select * from tabela where matricula = " & request("buscamatricula")

 

'OBS estou considerando que o numero da matricula seja do tipo numero se for texto o que não está errado por que não faz conta com ele você tem que colocar o critério da sql entre apóstrofos veja o exemplo abaixo mas em outro lado a busca de campos com o tipo numéricos é mais rápida...

 

sql = "select * from tabela where matricula = '" & request("buscamatricula") & "'"

 

execute a sql ...

if rs.eof = false and rs.bof = false then

nome = rs("nome")

endereco = rs("endereço")

pai = rs("nomepai")

mae = ...

... assim vai

end if

rs.close

feche também o conexão depois set = nothing o rs e o "cn"

 

end if

%>

 

nos demais campos fora o da matricula por que já tem o value="<%=request("buscamatricula")%>" você colocará o value com as variáveis carregadas veja um exemplo:

 

<input type="text" name="matricula" onblur="buscamatricula(this.value);" value="<%=request("buscamatricula")%>">

<input type="text" name="nome" value="<%=nome%>">

 

essa rotina é que se a matricula não estiver cadastro você continua normalmente...

qualquer dúvida é postar...

Gustavo mais uma vez obrigado pela dica e pela paciencia em explicar.

as duvidas na primeira parte

<script>

function buscamatricula(nummatricula){

if (nummatricula !="") {

window.location = "amesmapagina.asp?buscamatricula=" + nummatricula

}

}

</script>

eu preciso criar uma pagina asp exclusiva para esse autocomplete? essa parte do script vai ficar junto do <% %>?

a parte do value que você explicou a cima no mesmo campo coloque no value="<%=request("buscamatricula")%>" fica na pagina html?

estou usando do DW para fazer o html.

Compartilhar este post


Link para o post
Compartilhar em outros sites

existem plugins em jquery que vc implementa isso rápido também

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse trecho Rafael você colocar no final dessa sua pagina mesmo sem estar entre <%%> pois é um script que vai funcionar no cliente os scripts que estão entre <%%> funcionam no servidor

 

Xan jquery faz mais rápido mas tem que ser mais devagar... só postar que tem como fazer sem um passo a passo fica complexo se vc tem a ideologia de não fazer o serviço para os outros tudo bem eu concordo mas um exemplo não mata ninguém ... não é subestimando o poder de raciocínio do Rafael mas o cara ta aprendendo agora e ele esta indo muito bem... conheço pessoas que não aprendem nem explicando pessoalmente frente a frente... suas respostas são muito vagas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse trecho Rafael você colocar no final dessa sua pagina mesmo sem estar entre <%%> pois é um script que vai funcionar no cliente os scripts que estão entre <%%> funcionam no servidor

 

Xan jquery faz mais rápido mas tem que ser mais devagar... só postar que tem como fazer sem um passo a passo fica complexo se você tem a ideologia de não fazer o serviço para os outros tudo bem eu concordo mas um exemplo não mata ninguém ... não é subestimando o poder de raciocínio do Rafael mas o cara ta aprendendo agora e ele esta indo muito bem... conheço pessoas que não aprendem nem explicando pessoalmente frente a frente... suas respostas são muito vagas...

Gustavo sem querer arrumar encrenca nem brigas, mas concordo com vc. xan deve ser mt bom acredito nisso ninguem tem a qnt de post que ele tem atoa e agradeço o apoio dele, mas pra quem esta começando realmente é complicado(fiz um curso de 1 mes em asp mt pouco tempo),e sei o qnt e chato explicar passo a passo e o cara não enxergar coisa que achamos simples por isso peço a vc gustavo que continue com suas explicações como falei antes mais vale uma solução aprendida do que mil copiadas e coladas.

 

agora sobre o script realmente não sabia que rodava cliente já o <%%> isso já sabia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo rafael fica no html veja esse exemplo simples!!

 

<html>
<form name="form">
<input type="text" name="v1" value="6">
<input type="text" name="v2" value="5">
<input type="button" value="somar" onclick="alert(soma(document.form.v1.value,document.form.v2.value));">
</form>
</html>
<script>
alert("bem vindo");
function soma(n1,n2){
var num1 = n1;var num2 = n2;var resp;
resp = parseInt(num1) + parseInt(num2);
return resp;
}
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

isso mesmo rafael fica no html veja esse exemplo simples!!

 

<html>
<form name="form">
<input type="text" name="v1" value="6">
<input type="text" name="v2" value="5">
<input type="button" value="somar" onclick="alert(soma(document.form.v1.value,document.form.v2.value));">
</form>
</html>
<script>
alert("bem vindo");
function soma(n1,n2){
var num1 = n1;var num2 = n2;var resp;
resp = parseInt(num1) + parseInt(num2);
return resp;
}
</script>

 

Gustavo desculpe estive fora a trabalho mas vou testar hoje anoite em casa e coloco o que consegui fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos lá gustavo demorou mt mas acho que cheguei aonde queriamos, criei o script redirecionando para a mesma pagina com extensão asp na paginha html

<script>
function buscact(numct){
if (numct !="") {
window.location = "Atualizar_bf_teste.asp?buscact=" + numct
}
}
</script>

criei a pagina atualizar_bf_teste.asp e nela coloquei o select recolhi os dados do banco e adicionei os campo
<%
if request("buscact") <> "" then
sql = "select * from tab_quadro_Brasfels where ct = '" & request("buscact") & "'"
'OBS estou considerando que o numero da matricula seja do tipo numero se for texto o que não está errado por que não faz conta com ele você tem que colocar o critério da sql entre apóstrofos veja o exemplo abaixo mas em outro lado a busca de campos com o tipo numéricos é mais rápida...
'execute a sql ...
if rs.eof = false and rs.bof = false then
ct = rs("ct")
descricao = rs("descricao")
departamento = rs("departamento")
matricula = rs("matricula")
usuario = rs("usuario")
Status = rs("status")
obs = rs ("obs")
end if
rs.close
'feche também o conexão depois
set = nothing o rs e o "cn"
end if
%>

e preenchi os campos com os dados recolhidos do banco

<p>CT:
<label for="ct"></label>
<input name="ct" type="text" id="ct" size="15" value="<%=ct%>" maxlength="6" />
<br />
<br />
Descrição:
<label for="descricao"></label>
<input name="ct" type="text" id="ct" size="15" value="<%=descricao%>" maxlength="6" />
vê se é esse mesmo o raciocínio. se for nao fez amudança ao sair do campo ct nao

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, Rafael, não tem nada a ver com não passar serviço, como outros pensam, no entanto se ver o tanto de código pronto que coloco pra ajudar os outros, fora aqueles que me mandam email e passo code pronto e funcionando 100%. Não tem problema tendo dúvida posta aí. E tem outros exemplos de jquery que postei também pode te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, Rafael, não tem nada a ver com não passar serviço, como outros pensam, no entanto se ver o tanto de código pronto que coloco pra ajudar os outros, fora aqueles que me mandam email e passo code pronto e funcionando 100%. Não tem problema tendo dúvida posta aí. E tem outros exemplos de jquery que postei também pode te ajudar.

se vc tiver algo pronto e poder me explicar agradeço, pq alem de funcionar o principal objetivo é aprender senão viro programador de google entendeu copia e cola e nao é isso que quero. nao sei se vc leu meu codigo acima mas preciso fazer um auto completar deste campo "CT" como referencia puxando mais 4 campos da tabela eu uso o access como banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

me mande um email no xanburzum@terra.com.br, que irei passar um modelo que tenho aqui, o código inteiro é comentado e tendo dúvida vc posta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rafael vi seu código está quase lá

 

primeiro no código abaixo esqueci que colocar o ; (ponto e vígula) da linha... veja já colocado

 

function buscact(numct){
if (numct !="") {
window.location = "Atualizar_bf_teste.asp?buscact=" + numct ;
}
}
</script>
e faltou o onblur que é o AOSAIR do campo!!! veja já colocado
<input name="ct" type="text" id="ct" size="15" value="<%=ct%>" onblur="buscact(this.value);" maxlength="6" />
esse this.value significa que você quer o valor do mesmo campo !!
Rafael você que está aprendendo não queira aprender jquery agora pois te digo que é muito bom usa-lo é rápido é show de bola MAS pra quem já sabe o básico de como as coisas funcionam pois um jquery NUNCA vem do jeito que agente quer SEMPRE devemos adapta-lo!!
vamos devagar conforme o tempo você vai se familiarizar com VBScript e JavaScript ... com isso você enxergar o jquery melhor!!
Hoje eu não escrevo mas SQL para inserção e edição no banco pois fiz uma rotina que envolve tanto vbscript(ASP), javascript ,AJAX que significa Asynchronous JavaScript and XML .... resumidamente essa rotina lê os campos do formulário html manda ao servidor que gera a sql automaticamente e me envia o retorno ... sem atualizar a página... mas já tenho tempo em programação eu não poderia querer te passar essa facilidade pois primeiro você tem que entender como as coisas funcionam.. entende... qualquer dúvida poste ai!!

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.