Seguinte, sou novo no forum e não consegui resolver meu problema procurando na internet, to tão enrolado que não tenho nem certeza se é um problema de asp,ajax ou sql.
Peço ajuda ao moderador para mudar o tópico de lugar caso ele julgue necessario.
O problema: faço uma busca passando como parâmetro uma string que é o value de um input do tipo select, e exibo o resultado por ajax dentro de uma div.
Funciona sem nenhum problema para palavras sem caracteres especiais.
Mas caso a palavra tenha algum caracter especial não funciona, ate aisem grandes surpresas.
Mas a grande ZICA mesmo está no fato de que a string onde eu monto o select está correta, eu imprimo o resultado dela na tela, copio/colo e rodo no banco e funciona, so na aplicação que não está funcionando.
O código das páginas:
pesquisa_TUSS.asp
<!--#INCLUDE FILE="../etc/servicos/lib/DB_amil11.asp" --> <!--#INCLUDE file="../etc/servicos/lib/UDF_string.asp" --> <!--#INCLUDE file="Functions/class.asp" --> <!--#INCLUDE file="Functions/Functions.asp" --> <% Session("tituloPagina") = "TUSS" Session("hideHeader") = "1" Session("breadcrumb") = "" Session("imgTopo") = "topo_tuss.jpg" Session("aba") = "4" db_Conecta Conn, "AmilServicos" %> <!--#include file="inc/header.aspx" --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Pesquisa TUSS</title> </head> <script language="javascript"> //*************************************************************// //******** ajax ***********************************************// //*************************************************************// //A função abaixo pega a versão mais nova do xmlhttp do IE e verifica se é Firefox. Funciona nos dois. function createXMLHTTP() { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch(ex) { try { ajax = new XMLHttpRequest(); } catch(exc) { alert("Esse browser não tem recursos para uso do Ajax"); ajax = null; } } return ajax; } var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; for (var i=0; i < arrSignatures.length; i++) { try { var oRequest = new ActiveXObject(arrSignatures[i]); return oRequest; } catch (oError) { } } throw new Error("MSXML is not installed on your system."); }
function ajax_tuss(tipo,variavel,subgrupo) { alert(variavel); // Criação do objeto XMLHTTP var oHTTPRequest = createXMLHTTP(); // Abrindo a solicitação HTTP. O primeiro parâmetro informa o método post/get // O segundo parâmetro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc. // O terceiro parametro informa que a solicitacao não assincrona, // Para solicitação síncrona, o parâmetro deve ser false oHTTPRequest.open("post", "ajax_tuss.asp?tipo="+tipo+"&variavel="+variavel+"&subgrupo="+subgrupo, true); // Para solicitações utilizando o método post, deve ser acrescentado este cabecalho HTTP oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // A função abaixo é executada sempre que o estado do objeto muda (onreadystatechange) oHTTPRequest.onreadystatechange=function() { // O valor 4 significa que o objeto já completou a solicitação if (oHTTPRequest.readyState==4) { // Abaixo o texto é gerado no arquivo ajax_login.asp e colocado no div document.all.div_tuss.innerHTML = oHTTPRequest.responseText; } } // Abaixo é enviada a solicitação. Note que a configuração // do evento onreadystatechange deve ser feita antes do send. oHTTPRequest.send("tipo=" + tipo + "&variavel=" + variavel + "&subgrupo=" + subgrupo); }
function ajax_subgrupo(grupo) { // Criação do objeto XMLHTTP var oHTTPRequest = createXMLHTTP(); // Abrindo a solicitação HTTP. O primeiro parâmetro informa o método post/get // O segundo parâmetro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc. // O terceiro parametro informa que a solicitacao não assincrona, // Para solicitação síncrona, o parâmetro deve ser false oHTTPRequest.open("post", "ajax_tuss_subgrupo.asp?grupo="+grupo, true); // Para solicitações utilizando o método post, deve ser acrescentado este cabecalho HTTP oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // A função abaixo é executada sempre que o estado do objeto muda (onreadystatechange) oHTTPRequest.onreadystatechange=function() { // O valor 4 significa que o objeto já completou a solicitação if (oHTTPRequest.readyState==4) { // Abaixo o texto é gerado no arquivo ajax_login.asp e colocado no div document.all.div_subgrupo.innerHTML = oHTTPRequest.responseText; } } // Abaixo é enviada a solicitação. Note que a configuração // do evento onreadystatechange deve ser feita antes do send. oHTTPRequest.send("grupo=" + grupo); } </script> <body> <table> <form name="frm_tuss"> <tr> <td>Selecionar especialidade:</td> <td> <% strSQL = Empty strSQL = strSQL & "SELECT" strSQL = strSQL & " ESPECIALIDADE " strSQL = strSQL & "FROM" strSQL = strSQL & " dboIntra_TUSS " strSQL = strSQL & "GROUP BY" strSQL = strSQL & " ESPECIALIDADE " strSQL = strSQL & "ORDER BY" strSQL = strSQL & " ESPECIALIDADE" ' Response.Write(strSQL) ' Response.End() Set rsCboEspecialidade = Conn.Execute(strSQL) %> <select name="espec_tuss"> <% If Not rsCboEspecialidade.EOF then While Not rsCboEspecialidade.EOF %> <option value="<%=Replace(rsCboEspecialidade("ESPECIALIDADE")," ","_")%>"><%=rsCboEspecialidade("ESPECIALIDADE")%></option> <% rsCboEspecialidade.MoveNext Wend Else Response.Write("Nenhuma Especialidade Encontrada.") End If %> <!--<option value="0">Teste Especialidade</option>--> </select> </td> <td> <input type="button" name="btn_espec_tuss" value="Pesquisar" onClick="ajax_tuss(1,document.frm_tuss.espec_tuss.value,'');"> </td> </tr> <tr> <td>Digite o código TUSS:</td> <td> <input type="text" name="cod_tuss" maxlength="8"> </td> <td> <input type="button" name="btn_cod_tuss" value="Pesquisar" onClick="ajax_tuss(2,document.frm_tuss.cod_tuss.value)"> </td> </tr> <tr> <td>Busca palavra na descrição TUSS:</td> <td> <input type="text" name="desc_tuss"> </td> <td> <input type="button" name="btn_desc_tuss" value="Pesquisar" onClick="ajax_tuss(3,document.frm_tuss.desc_tuss.value)"> </td> </tr> <tr> <td>Busca palavra na descrição AMB</td> <td> <input type="text" name="desc_amd"> </td> <td> <input type="button" name="btn_desc_amd" value="Pesquisar" onClick="ajax_tuss(4,document.frm_tuss.desc_amd.value)"> </td> </tr> <tr> <td>Selecione o Grupo/Sub-Grupo TUSS</td> <td> <select name="grupo_tuss" onChange="ajax_subgrupo(this.value);"> <% strSQL = Empty strSQL = strSQL & "SELECT" strSQL = strSQL & " GRUPO " strSQL = strSQL & "FROM" strSQL = strSQL & " dboIntra_TUSS " strSQL = strSQL & "GROUP BY" strSQL = strSQL & " GRUPO " strSQL = strSQL & "ORDER BY" strSQL = strSQL & " GRUPO" ' Response.Write(strSQL) ' Response.End() Set rsCboGrupo = Conn.Execute(strSQL) If Not rsCboGrupo.EOF then While Not rsCboGrupo.EOF %> <option value="<%=Replace(rsCboGrupo("GRUPO")," ","_")%>"><%=rsCboGrupo("GRUPO")%></option> <% rsCboGrupo.MoveNext Wend Else Response.Write("Nenhuma Especialidade Encontrada.") End If %>
[codebox] <!--#INCLUDE FILE="../etc/servicos/lib/DB_amil11.asp" --> <% db_Conecta Conn, "AmilServicos" '************************************* '*** DECLARANDO VARIÁVEIS - INICIO *** '************************************* Dim Tipo Dim Variavel Dim SubGrupo Dim strSQL Dim rs '************************************* '*** DECLARANDO VARIÁVEIS - FIM *** '*************************************
End Select '************************************************************** '*** VERIFICO QUAL O TIPO DA FILTRAGEM SELECIONADO - FIM *** '************************************************************** Response.Write("Variavel - " & Variavel & "<br>") Response.Write(strSQL) 'Response.End() Set rs = Conn.Execute(strSQL)
'response.Write(rs.)
if not rs.eof then Response.Write("<table>") Response.Write("<tr>") Response.Write("<td>") Response.Write("Código TUSS") Response.Write("</td>") Response.Write("<td>") Response.Write("Procedimento TUSS") Response.Write("</td>") Response.Write("<td>") Response.Write("Especialidade TUSS") Response.Write("</td>") Response.Write("</tr>") While Not rs.eof Response.Write("<tr>") Response.Write("<td>") Response.Write(rs("COD_TUSS")) Response.Write("</td>") Response.Write("<td>") Response.Write(rs("PROC_TUSS")) Response.Write("</td>") Response.Write("<td>") Response.Write(rs("ESPECIALIDADE")) Response.Write("</td>") rs.MoveNext Response.Write("</tr>") Wend Response.Write("</tr>") Response.Write("</table>") else Response.Write("Não encontrado!") end if %>
No arquivo pesquisa_TUSS.asp eu estou selecionando no primeiro combo uma opção qualquer, ai o resultado vai ser gerado no ajax_tuss.asp.
O parametro enviado pela página pesquisa_TUSS.asp vai com os acentos, eu recupero ele ajax_tuss.asp acentuado e tudo certo, monto a string do select e ele não funciona.
Vou testar agora o collation no banco para ver se me ajuda, caso alguém possa me dar mais ideias fico agradecido desde já.
Pergunta
Marcos Chopps
Bom dia povo.
Seguinte, sou novo no forum e não consegui resolver meu problema procurando na internet, to tão enrolado que não tenho nem certeza se é um problema de asp,ajax ou sql.
Peço ajuda ao moderador para mudar o tópico de lugar caso ele julgue necessario.
O problema: faço uma busca passando como parâmetro uma string que é o value de um input do tipo select, e exibo o resultado por ajax dentro de uma div.
Funciona sem nenhum problema para palavras sem caracteres especiais.
Mas caso a palavra tenha algum caracter especial não funciona, ate aisem grandes surpresas.
Mas a grande ZICA mesmo está no fato de que a string onde eu monto o select está correta, eu imprimo o resultado dela na tela, copio/colo e rodo no banco e funciona, so na aplicação que não está funcionando.
O código das páginas:
pesquisa_TUSS.asp
ajax_tuss.asp
<!--#INCLUDE FILE="../etc/servicos/lib/DB_amil11.asp" -->
<%
db_Conecta Conn, "AmilServicos"
'*************************************
'*** DECLARANDO VARIÁVEIS - INICIO ***
'*************************************
Dim Tipo
Dim Variavel
Dim SubGrupo
Dim strSQL
Dim rs
'*************************************
'*** DECLARANDO VARIÁVEIS - FIM ***
'*************************************
'************************************
'*** INICIANDO VARIÁVEIS - INICIO ***
'************************************
Tipo = Request.Form("tipo")
Variavel = CStr(Replace(Request.Form("variavel"),"_"," "))
SubGrupo = Request.Form("subgrupo")
'************************************
'*** INICIANDO VARIÁVEIS - FIM ***
'************************************
'response.write("Tipo - " & Tipo & "<br>")
'response.write("Variavel - " & Variavel & "<br>")
'response.write("SubGrupo - " & SubGrupo)
'response.end()
'**************************************************************
'*** VERIFICO QUAL O TIPO DA FILTRAGEM SELECIONADO - INICIO ***
'**************************************************************
Select Case(Tipo)
Case 1 '*** Especialidade ***
strSQL = Empty
strSQL = strSQL & "SELECT"
strSQL = strSQL & " * "
strSQL = strSQL & "FROM"
strSQL = strSQL & " dboIntra_TUSS "
strSQL = strSQL & "WHERE"
strSQL = strSQL & " ESPECIALIDADE = '" & Variavel & "'"
Case 2 '*** Código TUSS ***
strSQL = Empty
strSQL = strSQL & "SELECT"
strSQL = strSQL & " * "
strSQL = strSQL & "FROM"
strSQL = strSQL & " dboIntra_TUSS "
strSQL = strSQL & "WHERE"
strSQL = strSQL & " COD_TUSS = '" & Variavel & "'"
Case 3 '*** Palavra na Descrição do TUSS ***
strSQL = Empty
strSQL = strSQL & "SELECT"
strSQL = strSQL & " * "
strSQL = strSQL & "FROM"
strSQL = strSQL & " dboIntra_TUSS "
strSQL = strSQL & "WHERE"
strSQL = strSQL & " PROC_TUSS LIKE '% '" & Variavel & "%'"
Case 4 '*** Palavra na Descrição AMB ***
strSQL = Empty
strSQL = strSQL & "SELECT"
strSQL = strSQL & " * "
strSQL = strSQL & "FROM"
strSQL = strSQL & " dboIntra_TUSS "
strSQL = strSQL & "WHERE"
strSQL = strSQL & " DESC_AMD LIKE '% '" & Variavel & "%'"
Case 5 '*** Grupo/Subgrupo ***
strSQL = Empty
strSQL = strSQL & "SELECT"
strSQL = strSQL & " * "
strSQL = strSQL & "FROM"
strSQL = strSQL & " dboIntra_TUSS "
strSQL = strSQL & "WHERE"
strSQL = strSQL & " GRUPO = '" & Variavel & "'"
If SubGrupo <> "" Or Not Isnull(SubGrupo) then
strSQL = strSQL & " SUBGRUPO = '" & SubGrupo & "'"
End If
End Select
'**************************************************************
'*** VERIFICO QUAL O TIPO DA FILTRAGEM SELECIONADO - FIM ***
'**************************************************************
Response.Write("Variavel - " & Variavel & "<br>")
Response.Write(strSQL)
'Response.End()
Set rs = Conn.Execute(strSQL)
'response.Write(rs.)
if not rs.eof then
Response.Write("<table>")
Response.Write("<tr>")
Response.Write("<td>")
Response.Write("Código TUSS")
Response.Write("</td>")
Response.Write("<td>")
Response.Write("Procedimento TUSS")
Response.Write("</td>")
Response.Write("<td>")
Response.Write("Especialidade TUSS")
Response.Write("</td>")
Response.Write("</tr>")
While Not rs.eof
Response.Write("<tr>")
Response.Write("<td>")
Response.Write(rs("COD_TUSS"))
Response.Write("</td>")
Response.Write("<td>")
Response.Write(rs("PROC_TUSS"))
Response.Write("</td>")
Response.Write("<td>")
Response.Write(rs("ESPECIALIDADE"))
Response.Write("</td>")
rs.MoveNext
Response.Write("</tr>")
Wend
Response.Write("</tr>")
Response.Write("</table>")
else
Response.Write("Não encontrado!")
end if
%>
No arquivo pesquisa_TUSS.asp eu estou selecionando no primeiro combo uma opção qualquer, ai o resultado vai ser gerado no ajax_tuss.asp.
O parametro enviado pela página pesquisa_TUSS.asp vai com os acentos, eu recupero ele ajax_tuss.asp acentuado e tudo certo, monto a string do select e ele não funciona.
Vou testar agora o collation no banco para ver se me ajuda, caso alguém possa me dar mais ideias fico agradecido desde já.
Att.
Editado por Marcos ChoppsLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados