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

caixa combo pesquisa funciona com Access e não MySQL


AlbertoRT

Pergunta

Estou há dias tentado e não consigo. Não gostaria de ficar sem funcionalidade para pesquisar na minha página.
Na página logs.asp tem uma Caixa Combo com o  "form" menuPesquisa (action="pesquisa.asp) com o código:

<select name="modo" class="CaixaCombo">  
    <option value="indicativo_ja_registrado">Indicativo</option>
    <option value="qra">QRA</option>
    <option value="nome_pais">Entidade</option>
  </select>
  <input name="valor" type="text" class="CaixaTexto" size="25" maxlength="50" />
  <input name="imageField" type="image" class="CaixaTexto" src="images/btn_OkLogo.gif" align="top" width="25" height="20" border="0" />

Na página logs.asp tem a Caixa Combo com parte do código:

<div class="div-pesquisa" >
<form name="form1" method="post" action="pesquisa.asp">

<tr>
<samp class="caption-cor-font">We have already made contact? See: (Pesquisa por:)&nbsp;&nbsp;&nbsp;</samp></tr>

<tr> </tr>

<tr>
  <!--#include file="menuPesquisa.asp"-->
  </td>
</tr>
</form>
</div>

Na página pesquisa.asp em esse código:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
option explicit
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html lang="pt-br">
<head>
<!--#Include file="bdmysqlConexao.asp"-->
<%
Response.Expires = 0
call abrecon
strSql = "SELECT * FROM qry_pesquisa "
strSql = strSql & + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
strSql = strSql & + " ORDER BY data_qso DESC"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.Open strSql, cn
totalContatos = rs.recordcount
estilo = "Pesq"
%>

Obs.: a qry_pesquisa funciona perfeitamente no MySQL (testada).

Por favor, estou tendo dificuldade para explicar por isso vou colocar o link onde tem a página para fazer a pesquisa (observem na parte superior a direita). Essa ainda funciona com com banco de dados Access. Clique no link abaixo e digite o indicado, por favor:

Digite por exemplo PY1SFF

Vai abrir uma página com o nome http://www.informacaoteixeira.com.br/pesquisa.asp

com todos os registros do PY1SFF.

Tentando abrir a mesma página porem trabalhando com o banco de dados MySQL (<!--#Include file="bdmysqlConexao.asp"-->) aparece a seguinte mensagem de erro:

"Erro de tempo de execução do Microsoft VBScript erro '800a01f4'

Variável não definida: 'servidor'

/meu novo site nova versao/bdmysqlConexao.asp, linha 11"

O "bdmysqlConexao.asp" tem o seguinte código:

<%
Response.CodePage = 65001
Response.CharSet = "utf-8"

Session.LCID = 1046
Dim cn, strConexao, lhost
 
Sub abrecon()
	' PARA USO LOCAL
	servidor = "localhost"
	base_de_dados = "info16br"
	logindb = "root"
	senhadb = "admin"
		
	strConexao = "Driver={MySQL ODBC 3.51 Driver};SERVER=" & servidor
	strConexao = strConexao & "; DATABASE=" & base_de_dados
	strConexao = strConexao & "; Uid=" & logindb
	strConexao = strConexao & "; Pwd=" & senhadb
	
	On error resume next
	Err.clear()
	set cn = server.CreateObject("ADODB.Connection")
	cn.cursorlocation = 3
	cn.CommandTimeout = 1800
	cn.open strConexao
	
	'SE HOUVER ERRO COM BANCO, EXIBE PÁGINA PERSONALIZADA
	'if Err.number <> 0 then
	'	cn.Close
	'	Set cn = Nothing
	'	response.Redirect("aviso.html")
	 'end if
End Sub

Sub fechacon()
	cn.Close
	Set cn = Nothing
End Sub
%>

Já tentei de tudo é não sei qual a variável não definida no servidor:

Mensagem de Erro:

"Variável não definida: 'servidor'

/meu novo site nova versao/bdmysqlConexao.asp, linha 11"

A linha 11 é essa: servidor = "localhost" do bdmysqlConexao.asp

Obrigado

 

Editado por AlbertoRT
Corrigir erro digitação
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Comece eliminando possíveis problemas:

Faça uma string de conexão sem o uso de variáveis:

strConexao = "Driver={MySQL ODBC 3.51 Driver};SERVER=localhost; DATABASE=info16br; Uid=root; Pwd=admin"

Use o MyODBC 5.x para versões do MySQL acima da versão 5.x e com Windows XP SP3 ou maior

Em seu sql

strSql = strSql & + " WHERE " + request.Form("modo") + " LIKE " + "'%" + 

Não está faltando algo entre o LIKE e o %?

Link para o comentário
Compartilhar em outros sites

  • 0

Caro Denis,

Só você dando essa atenção já é muito bom. Estou no início de tudo.
Peço perdão pela falta de entendimento imediato.

Eu tendi para colocar a string de conexão na página pesquisa.asp dessa forma:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
option explicit
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html lang="pt-br">
<head>
<!--#Include file="bdmysqlConexao.asp"-->
<%
Response.Expires = 0

/*Inclui conforme meu entedimento - Denis*/
strConexao = "Driver={MySQL ODBC 3.51 Driver};SERVER=localhost; DATABASE=info16br; Uid=root; Pwd=admin"

call abrecon
strSql = "SELECT * FROM qry_pesquisa "
strSql = strSql & + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
strSql = strSql & + " ORDER BY data_qso DESC"
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.Open strSql, cn
totalContatos = rs.recordcount
estilo = "Pesq"
%>

Denis, todas as páginas funcionam com o banco de dados MySQL considerando o <!--#Include file="bdmysqlConexao.asp"-->

Que tem esse código:

<%
Response.CodePage = 65001
Response.CharSet = "utf-8"

Session.LCID = 1046
Dim cn, strConexao, lhost
 
Sub abrecon()
	' PARA USO LOCAL
	servidor = "localhost"
	base_de_dados = "info16br"
	logindb = "root"
	senhadb = "admin"
	
	' PARA CONEXAO COM SERVIDOR (FALAR COM CENTRAL SERVER)
'	servidor = "robb0150.publiccloud.com.br"
'	base_de_dados = "nome_do_banco"
'	logindb = "login_do_banco"
'	senhadb = "SenhDoBanco"

	strConexao = "Driver={MySQL ODBC 3.51 Driver};SERVER=" & servidor
	strConexao = strConexao & "; DATABASE=" & base_de_dados
	strConexao = strConexao & "; Uid=" & logindb
	strConexao = strConexao & "; Pwd=" & senhadb
	
	On error resume next
	Err.clear()
	set cn = server.CreateObject("ADODB.Connection")
	cn.cursorlocation = 3
	cn.CommandTimeout = 1800
	cn.open strConexao
	
	'SE HOUVER ERRO COM BANCO, EXIBE PÁGINA PERSONALIZADA
	'if Err.number <> 0 then
	'	cn.Close
	'	Set cn = Nothing
	'	response.Redirect("aviso.html")
	 'end if
End Sub

Sub fechacon()
	cn.Close
	Set cn = Nothing
End Sub
%>

Com relação se está faltando algo entre o LIKE e o %?

A página pesquisa que trabalha com o banco de dados Access está assim:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
option explicit
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html lang="pt-br">
<head>
<!--#Include file="dbConexao.asp"-->
<%
Response.Expires = 0
DIM conexaoDataBase, sqlDados, rsDados, totalContatos, estilo
Call abreConexao
sqlDados = "SELECT * FROM qry_pesquisa "
sqlDados = sqlDados + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
sqlDados = sqlDados + " ORDER BY data_qso DESC"
Set rsDados = conexaoDataBase.Execute(sqlDados)
totalContatos = rsDados.recordcount
estilo = "Pesq"
%>

Observe por favor que o include é outro: <!--#Include file="dbConexao.asp"-->

Depois de

strSql = strSql & + " WHERE " + request.Form("modo") + " LIKE " + "'%" + 
request.Form("valor") + "%' "
strSql = strSql & + " ORDER BY data_qso DESC"

Tem o acima indicado.

Não consigo entender como que: Aqui se digitar por exemplo PY1SFF funciona a pesquisa

A diferença e grande é que o link ainda trabalha com o banco de dados Access.

Não sei sinceramente como você Denis consegue entender as minhas explicações.

Meu muito obrigado.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Funcionou com o código (abaixo), mas quando abre tem na no código anterior com banco de dados anterior com Access tinha um totalContatos (total da pesquisa) e agora com MySQL faz a pesquisa mas não consigo totalContatos na página pesquisa.asp.

<%
call abrecon
DIM totalContatos
	strSql = "SELECT "
	strSql = strSql & " indicativo_ja_registrado, " 
	strSql = strSql & " qra,"
	strSql = strSql & " fez_contato, "
	strSql = strSql & " data_qso, "
	strSql = strSql & " hora_qso, "
	strSql = strSql & " faixa_simplex_MHz, "
	strSql = strSql & " faixa_MHz_qso_trans_repetidora, "
	strSql = strSql & " faixa_MHz_qso_trans_outras, "
	strSql = strSql & " nome_pais " 
	strSql = strSql & " FROM qry_pesquisa "
	strSql = strSql & " " + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' " 
	strSql = strSql & " ORDER BY data_qso DESC " 
	Set rs=Server.CreateObject("ADODB.RecordSet")
	rs.Open strSql, cn
%>

Só falta quando gerar a página pesquisa.asp o total de registros que foi filtrado.

Nessa página pesquisa.asp tem:

<tr>
    <td class="texto-para-registro-pesquisa" colspan="2">Sua pesquisa encontrou: <b><%=totalContatos%></b> Contatos(s) 73!73!</td>
  </tr>

Anteriormente com Access o código erra:

<!--#Include file="dbConexao.asp"-->
<%
Response.Expires = 0
DIM conexaoDataBase, sqlDados, rsDados, totalContatos, estilo
Call abreConexao
sqlDados = "SELECT * FROM qry_pesquisa "
sqlDados = sqlDados + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' "
sqlDados = sqlDados + " ORDER BY data_qso DESC"
Set rsDados = conexaoDataBase.Execute(sqlDados)
totalContatos = rsDados.recordcount
estilo = "Pesq"
%>

Observe o totalContatos tentei no novo código isso:

<!--#Include file="bdmysqlConexao.asp"-->

<%
call abrecon
 Dim totalContatos
	strSql = "SELECT "
	strSql = strSql & " indicativo_ja_registrado, " 
	strSql = strSql & " qra,"
	strSql = strSql & " fez_contato, "
	strSql = strSql & " data_qso, "
	strSql = strSql & " hora_qso, "
	strSql = strSql & " faixa_simplex_MHz, "
	strSql = strSql & " faixa_MHz_qso_trans_repetidora, "
	strSql = strSql & " faixa_MHz_qso_trans_outras, "
	strSql = strSql & " nome_pais " 
	strSql = strSql & " FROM qry_pesquisa "
	strSql = strSql & " " + " WHERE " + request.Form("modo") + " LIKE " + "'%" + request.Form("valor") + "%' " 
	strSql = strSql & " ORDER BY data_qso DESC " 
	Set rs=Server.CreateObject("ADODB.RecordSet")
    totalContatos = rs.recordcount
   	rs.Open strSql, cn
%>

Mas não funciona.

 

 

 

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...