Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal estou fazendo um sistema de busca para um cadastro de empresa por ramo de atuação.
O problema é o seguinte tenho o seguinte sql
SQL = "SELECT nome FROM empresa WHERE nome LIKE '%" & Busca & "%' "
Ele procura somente o nome da empresa por ser uma simples consulta até ai vai bem
Gostária de fazer assim ele procura o nome na tabela empresa não achou ele procura na tabela ramo se tiver roda um INNERJOIN para verificar se existe relação o ramo encontrado e alguma empresa cadastrada se tiver imprime a empresa se não imprime uma mensagem de inforção.
Simples só que não to dando conta de fazer será que alguem pode me dar uma luz de como posso fazer isso no select pois ele teria que veficar nas duas tabelas depois verificar o id_ramo para relacionar as tabelas.
Estrutura do Banco MYSql
Tabela = Empresa
id_empresa
id_ramo
nome
Tabela = Ramo
id_ramo
nome
Abraços.
imagine duas tabelas 1-Produto,2-categoria, onde você quer procurar, por exemplo em um form num combo, onde você seleciona a categoria e pode inserir o nome de algum produto para pesquisa.
SELECT categoria.categoria, produto.nome, produto.cod_produto, produto.url_imagem, produto.descricao, produto.valor, FROM categoria INNER JOIN produto ON categoria.cod_categoria = produto.cod_categoria WHERE categoria.cod_categoria = '"&varcategoria&"' AND produto.nome LIKE '%"&varpesquisa&"%'" ORDER BY produto.nome"
cabe destacar a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo
Olá pessoal obrigado ai pela ajuda.
então xanburzum fiz como você me passou ai mas não funcionou pois não retorna nada independente doque eu passe pelo form e tmbm não da erro segue o sql
SQLGuia =" SELECT ramo.id_ramo, ramo.nome as n_ramo,"
SQLGuia = SQLGuia & " empresa.id_empresa, empresa.id_ramo, empresa.nome "
SQLGuia = SQLGuia & " FROM ramo "
SQLGuia = SQLGuia & " INNER JOIN empresa ON empresa.id_ramo = ramo.id_ramo"
SQLGuia = SQLGuia & " WHERE empresa.nome = '" & Request.Form("bsuca") & "' "
SQLGuia = SQLGuia & " AND ramo.nome LIKE '" & Request.Form("busca") & "' "
não da erro nenhum ....
pessoal funciono a pesquisa eu tinha escrito errado o nome de um form
agora seguinte quando ele não achar nada queria que desse um response.write
em vez do erro
Tipo de erro:
ADODB.Field (0x80020009)
BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.
coloca assim:
if rs.eof then
' se nao achar nada você pode redirecionar ou dar um response.write
response.write("Não encontrou nada")
'response.redirect("pagina.asp?msgeof=1")
set rs=nothing
else
'senão , aqui você exibe os dados...
Eu posso verificar antes como os dados estão vindo se atrazvéz de post ou querystring ????
Fiz esse if mas sempre imprime erro e quando não passo nada via post ele ainda da o erro de valor não existente
If Request.form("busca") = True then
response.Write " busca=trim(Request.Form(""busca"")) "
Else
If Request.QueryString("busca") = True then
response.Write " busca=trim(Request.QueryString(""busca"")) "
Else
End if
response.Write " (erro)"
End If
coloquei o codigo que você passou após o coon.execute e esse meu if ai antes do select está correto.
em vez de tudo isso
If Request.form("busca") = True then
response.Write " busca=trim(Request.Form(""busca"")) "
Else
If Request.QueryString("busca") = True then
response.Write " busca=trim(Request.QueryString(""busca"")) "
Else
End if
response.Write " (erro)"
End If
use
If Request("busca") = True then
response.Write trim(Request(""busca""))
busca = trim(Request(""busca""))
Else
response.Write "(erro)"
End If
o "request" apenas verifica os dois metodos de retorno!
Abraços
Olá Filipe coloquei o código que me passou e da erro Erro de tempo de execução do Microsoft VBScript (0x800A0009)
Subscrito fora do intervalo: '' na linha 103 do meu código que é a pesq=busca(x)
<%
If Request("busca") = True then
response.Write " busca=trim(Request.Form(""busca"")) "
Else
response.Write " (erro)"
End If
busca=split(busca,chr(32)) 'Cria um array e separa cada palavra da strig
pesq=busca(x) ' Entrega à variavel pesq, cada uma das palavras digitadas no formulário
Daqui pra em diante vai o select que faz a busca no banco de dados.
oque pode estar errado
Obrigado pela ajuda e atenção de todos
Opa,
olha nunca vi em varios anos de programação isto aqui em baixo. Ou se imprime busca ou o request dele neste caso não imprimiria nada. Ou daria erro.
response.Write " busca=trim(Request.Form(""busca"")) "
segue codigo correto
If Request("busca") <> "" then
response.Write trim(Request(""busca""))
busca = trim(Request(""busca""))
Else
response.Write "(erro)"
End If
como tentou fazer?