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

[RESOLVIDO]Problemas ao Retornar dados de um Select com Acentos


Marcos Chopps

Pergunta

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


<!--#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>
&lt;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
%>

<!--<option value="">--Grupo--</option>-->
</select>
<div name="div_subgrupo">
<select name="subgrupo" disabled>
<option value="">--Sub-Grupo--</option>
</select>
<input type="hidden" name="subgrupo_tuss" value="">
</div>
</td>
<td>
<input type="button" name="btn_desc_amd" value="Pesquisar" onClick="ajax_tuss(5,document.frm_tuss.grupo_tuss.value,document.frm_tuss.subgrupo_tuss.value)">
</td>
</tr>
<tr>
<td colspan="3">
<div name="div_tuss" id="div_tuss"></div>
</td>
</tr>
</form>
</table>
</body>
</html>
<!--#include file="inc/footer.aspx" -->
[/codebox]

ajax_tuss.asp

[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 ***
'*************************************

'************************************
'*** 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 Chopps
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...