Ir para conteúdo

POWERED BY:

Arquivado

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

mkboy

Buscar em várias tabelas

Recommended Posts

Tenho duas tabelas no meu banco de dados.

tb_clientes (cliente_id, b_nome, b_endereco, b_bairro, b_cidade, b_estado, b_cep, b_cnpj, b_ie, b_telefone, b_fax, b_email, b_responsavel)

 

tb_dominios (id, b_dominio, b_orgao, b_registro, b_plano, b_renovar, b_valor, b_cliente)

E quero fazer um sistema de busca que eu possa entrar com a palavra chave e selecionar em qual campo eu quero fazer a busca, sendo que os campos estao distribuidos em duas tabelas, a tb_clientes e a tb_dominios

 

O formulario que montei de busca ficou assim:

 

Imagem Postada

 

Com o código desta forma:(tirei uns campos, tabela e formatacao para ficar mais legivel)

 

<form action="busca.asp?tipo=cliente&cod=resultado" method="post"> 

 

Buscar: <input name="c_busca" type="text" id="c_busca" class="formgg">

 

<input type="submit" value="Buscar" name="B1" class="botao">

 

<input name="ck_razao" type="checkbox" id="ck_razao" value="ck_razao" checked >

<input name="ck_endereco" type="checkbox" id="ck_endereco" value="ck_endereco">

<input name="ck_bairro" type="checkbox" id="ck_bairro" value="ck_bairro">

</form>

Agora eu nao sei o que fazer na action!

 

Como eu faço para achar uma palavra nestas tabelas de acordo com a palavra chave e o campo selecionado no check.

 

Como façO!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%c_busca = Trim(replace(Request.form("c_busca"),"'","''"))ck_razao = request.Form("ck_razao")ck_endereco = request.Form("ck_endereco")ck_bairro = request.Form("ck_bairro")ck_cidade = request.Form("ck_cidade") ck_estado = request.Form("ck_estado")ck_telefone = request.Form("ck_telefone")ck_celular = request.Form("ck_celular")ck_fax = request.Form("ck_fax")ck_email = request.Form("ck_email")ck_cnpj = request.Form("ck_cnpj")ck_ie = request.Form("ck_ie")ck_contato = request.Form("ck_contato")ck_orgao = request.Form("ck_orgao")ck_dominio = request.Form("ck_dominio")ck_registro = request.Form("ck_registro")ck_vencimento = request.Form("ck_vencimento")%>

<% if ck_razao <> "" then %><% strSql = "SELECT * FROM tb_clientes WHERE b_nome LIKE '%"&c_busca&"%' AND categoria='"&ck_razao&"' " buscando.Open strSQL,DB,3,1%><%end if %><% if ck_endereco <> "" then %><% strSql = "SELECT * FROM tb_clientes WHERE b_endereco LIKE '%"&c_busca&"%' AND categoria='"&ck_endereco&"' " buscando.Open strSQL,DB,3,1%><%end if %>..... asssim com todos os outros campos<% if ck_dominio <> "" then %><% strSql = "SELECT * FROM tb_dominios WHERE b_dominio LIKE '%"&c_busca&"%' AND categoria='"&ck_dominio&"' " buscando.Open strSQL,DB,3,1%><%end if %>

É assim que eu faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Se o que você deseja atribuir a um único recordset os registros retornados pela sua consulta que estará analisando duas tabelas ... seu select deverá ficar como no exemplo abaixo.

 

ASP [/tr][tr]

select dominio.b_dominio, dominio.b_orgao, cliente.nome, cliente.endereco from dominio, cliente where dominio.b_orgao='sua_condicao'"

[/tr]

 

Para que você faça a busca apenas nos campos que o usuário selecionar, você deverá fazer algo assim...

 

ASP [/tr][tr]

 

if Request("b_dominio") <> "" then varDominioB_dominio = "nome_da_tabela."& Request("b_dominio") &","

if Request("b_orgao") <> "" then varDominioB_orgao = "nome_da_tabela."& Request("b_orgao") &","

if Request("nome") <> "" then varCliente_Nome = "nome_da_tabela."& Request("nome") &","

 

strCampos= varDominioB_dominio & varDominioB_or & varCliente_Nome

 

'aqui você insere um codigo que retira a vírgula que aparece após o último campo a ser selecionado para que a sintaxe de sua consuta fique correta.

 

'você tb deverá inserir um codigo que analise em qual (ais) tabela(s) será feita a consulta atribuindo o nome da tabela às variaveis varTabela_Dominio e varTabela_Cliente caso ela necessite ser acessada.

 

'Por fim seu select ficaria mais ou menos assim...

 

strSql="Select "& strCampos &" from "& varTabela_Dominio & varTabela_Cliente &" where "& varCondicoes &"'"

 

[/tr]

 

Pra você analisar quais serão as condições a serem analisadas, você deverá fazer um codigo similar ao que foi feito para verificar quais campos deverão ser selecionados.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Gregrorio, eu tinha feito do jeito abaixo, mas agora vou ver suas dicas e vou mudar.Eu fiz o codigo abaixo e executei com uma palavra no campo e o campo razao social selecionado, vou postar o codigo e o erro:

                    <% if Request("cod") = "resultado" then %><%c_busca = Trim(replace(Request.form("c_busca"),"'","''"))ck_razao = Request.form("ck_razao")ck_endereco = Request.form("ck_endereco")ck_bairro = Request.form("ck_bairro")ck_cidade = Request.form("ck_cidade")ck_estado = Request.form("ck_estado")ck_telefone = Request.form("ck_telefone")ck_celular = Request.form("ck_celular")ck_fax = Request.form("ck_fax ")ck_email = Request.form("ck_email")ck_cnpj = Request.form("ck_cnpj")ck_ie = Request.form("ck_ie")ck_contato = Request.form("ck_contato")ck_orgao = Request.form("ck_orgao")ck_dominio = Request.form("ck_dominio")ck_registro = Request.form("ck_registro")ck_vencimento = Request.form("ck_vencimento")%><br><% if Request.form("c_busca") = "" thenresponse.write"<img src=""imagens/duvida.jpg"" >    <font color=""#999900"" size=""2"" face=""Verdana"">O campo busca está vazio, tente novamente.</font>"end if %><br><% if ck_razao <> "" then %><% Sql1 = "SELECT * FROM tb_clientes WHERE b_nome LIKE '%"&c_busca&"%' AND categoria='"&ck_razao&"' " set rs1 = conexao.execute(Sql1)%><BR><BR>Razão Social: <%=rs("b_nome")%><%end if %> <% end if %>

Deu este erro:

Tipo de erro:Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)[Microsoft][Driver ODBC para Microsoft Access] Parâmetros insuficientes. Eram esperados 1./galery/intranet/busca.asp, line 79

Onde a linha 79 é a seguinte77. <% 78. Sql1 = "SELECT * FROM tb_clientes WHERE b_nome LIKE '%"&c_busca&"%' AND categoria='"&ck_razao&"' " 79. set rs1 = conexao.execute(Sql1)80. %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu este erro:Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)[Microsoft][Driver ODBC para Microsoft Access] Parâmetros insuficientes. Eram esperados 1./galery/intranet/busca.asp, line 79 Onde a linha 79 é a seguinte77. <% 78. Sql1 = "SELECT * FROM tb_clientes WHERE b_nome LIKE '%"&c_busca&"%' AND categoria='"&ck_razao&"' " 79. set rs1 = conexao.execute(Sql1)80. %>

Este erro ocorre quando você informa na sua consulta um nome de campo inexistente na tabela... acredito que na tabela tb_clientes você não tenha um campo com o nome "categoria" pelo que vi no seu post anterior, onde você lista o nome dos campos da tabela.

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.