
Critérios De Busca No Dreamweaver
#1
Posted 22/03/2008, 22:41
Estou fazendo uma página de busca no Dreamweaver. Na página de busca existe um grupo de radio buttons e um text field. Os radio buttons passam o nome do campo que deverá ser pesquisado e a text field passa o conjunto de caracteres que deverá ser pesquisado. Ex.: radio button setado para "Nome" e text field com o string "Skinner" irá pesquisar na tabela "Clientes" os nomes que contém o string "Skinner". Se neste caso o radio button estivesse setado para endereço, procuraria na coluna "Endereco" o string Skinner.
A minha dúvida é: uma vez que estes parâmetros estão sendo passados corretamente (eu consegui testá-los na página de resultado da pesquisa), como os colocarei no Recordset para que ele efetue a pesquisa?
SELECT *
FROM Clientes
WHERE %ColunaTabela% LIKE %ValorDigitado%
ORDER BY Nome_cli ASC
Em que
%ColunaTabela% = Request.QueryString("Coluna")
Este "Coluna", por sua vez, contém o valor que o grupo de radio buttons passa como parâmetro para a pesquisa. Exemplo: Nome_cli ou Endereco_cli, dependendo do que estiver setado.
Detalhe: o nome dos campos da tabela estão corretos, ou seja, cada item de radio button corresponde a um nome (exatamente igual), da coluna que deverá ser comparada.
Em outras palavras, ao setar o radio button para "Nome", ele passará para o recordset o valor "Nome_cli", que é o campo da tabela.
O Dreamweaver permite que o nome do campo da tabela seja passado como parâmetro em uma consulta? Na cláusila acima, após o "LIKE" o parâmetro funciona corretamente, mas não funciona após o "WHERE". Há alguma outra forma de se fazer isso utilizando o Dreamweaver? Se não houver, como eu poderia proceder?
Desde já, agradeço.
Ah! Desculpem-me pelo tamanho do post, mas tentei explicar nos mínimos detalhes.
#2
Posted 22/03/2008, 23:26
Sua dúvida está mais relacionada com ASP do que Dreamweaver, embora o software trabalhe perfeitamente com esta ação é importante termos domínio dos códigos.
Estou movendo para a sala de ASP.

Obs: Você realmente está trabalhando com ASP, não está ?
Caso seja PHP, avisa aí...

Qualquer coisa estamos aí !!!
AN

#3
Posted 23/03/2008, 01:08
A minha dúvida é: uma vez que estes parâmetros estão sendo passados corretamente (eu consegui testá-los na página de resultado da pesquisa), como os colocarei no Recordset para que ele efetue a pesquisa?
SELECT *
FROM Clientes
WHERE %ColunaTabela% LIKE %ValorDigitado%
ORDER BY Nome_cli ASC
Em que
%ColunaTabela% = Request.QueryString("Coluna")
Este "Coluna", por sua vez, contém o valor que o grupo de radio buttons passa como parâmetro para a pesquisa. Exemplo: Nome_cli ou Endereco_cli, dependendo do que estiver setado.
Amigo, vc terá que trocar %ColunaTabela por uma variável válida do ASP, criada com DIM, e o %ValorDigitado% também. Faça o seguinte, declare 2 variáveis no ASP:
dim coluna, valor
Bem, ae vc terá que pegar os valores respectivamente, mais ou menos assim:
coluna = Request.QueryString("Coluna") valor = Request.QueryString("txtValor")
Isso se txtValor for o nome de sua caixa texto, obviamente. Depois disso, tente chamar o SQL assim:
SQL="SELECT * FROM Clientes WHERE " & coluna & " LIKE " & valor & " ORDER BY Nome_cli ASC" RS.open SQL,conn,3,3
Supondo que RS seja o nome do recordset da tua conexão.
Veja se isso resolve teu problema

/*DarkSign*/
#4
Posted 23/03/2008, 16:12
Fala aí Skinner !!!
Sua dúvida está mais relacionada com ASP do que Dreamweaver, embora o software trabalhe perfeitamente com esta ação é importante termos domínio dos códigos.
Estou movendo para a sala de ASP.![]()
Obs: Você realmente está trabalhando com ASP, não está ?
Caso seja PHP, avisa aí...![]()
Qualquer coisa estamos aí !!!
AN
Oi AN,
Muito obrigado por ter movido o post para o lugar correto. (Esses novatos são fogo... sempre postam em lugares errados... rs.) Imaginei que talvez fosse ASP, mas como fiz tudo automático pelo Dreamweaver acabei colocando na seção do software.
Confirmando, é ASP mesmo.
Skinner
A minha dúvida é: uma vez que estes parâmetros estão sendo passados corretamente (eu consegui testá-los na página de resultado da pesquisa), como os colocarei no Recordset para que ele efetue a pesquisa?
SELECT *
FROM Clientes
WHERE %ColunaTabela% LIKE %ValorDigitado%
ORDER BY Nome_cli ASC
Em que
%ColunaTabela% = Request.QueryString("Coluna")
Este "Coluna", por sua vez, contém o valor que o grupo de radio buttons passa como parâmetro para a pesquisa. Exemplo: Nome_cli ou Endereco_cli, dependendo do que estiver setado.
Amigo, vc terá que trocar %ColunaTabela por uma variável válida do ASP, criada com DIM, e o %ValorDigitado% também. Faça o seguinte, declare 2 variáveis no ASP:dim coluna, valor
Bem, ae vc terá que pegar os valores respectivamente, mais ou menos assim:coluna = Request.QueryString("Coluna") valor = Request.QueryString("txtValor")
Isso se txtValor for o nome de sua caixa texto, obviamente. Depois disso, tente chamar o SQL assim:SQL="SELECT * FROM Clientes WHERE " & coluna & " LIKE " & valor & " ORDER BY Nome_cli ASC" RS.open SQL,conn,3,3
Supondo que RS seja o nome do recordset da tua conexão.
Veja se isso resolve teu problema
/*DarkSign*/
Oi DarkSign, obrigado pela ajuda.
Eu tentei fazer o que me disse, mas o problema é que estou utilizando o Dreamweaver e não entendo de ASP. Porém, com a dica que me deu, eu consegui ir direto ao ponto em que está dando erro, lá no código fonte. Eu criei o recordset dinamicamente, através daqueles wizzards que existem e olha só como o Dreamweaver codificou:
<%
Dim Busca_Clientes
Dim Busca_Clientes_cmd
Dim Busca_Clientes_numRows
Set Busca_Clientes_cmd = Server.CreateObject ("ADODB.Command")
Busca_Clientes_cmd.ActiveConnection = MM_produtec_conexao_STRING
Busca_Clientes_cmd.CommandText = "SELECT * FROM Clientes WHERE ? LIKE ? ORDER BY Nome_cli ASC"
Busca_Clientes_cmd.Prepared = true
Busca_Clientes_cmd.Parameters.Append Busca_Clientes_cmd.CreateParameter("param1", 200, 1, 255, "%" + Busca_Clientes__ColunaTabela + "%") ' adVarChar
Busca_Clientes_cmd.Parameters.Append Busca_Clientes_cmd.CreateParameter("param2", 200, 1, 255, "%" + Busca_Clientes__ValorDigitado + "%") ' adVarChar
Set Busca_Clientes = Busca_Clientes_cmd.Execute
Busca_Clientes_numRows = 0
%>
O erro está justamente nesta parte do código. Por favor, como eu faria para mostrar o string contendo a instrução "Select" na tela?
Eu tentei fazer assim: <%= Busca_Clientes_cmd.CommandText %> mas ele me mostrou o string exatamente como está lá em cima e eu queria com os valores já substituidos, para eu saber o que há de errado. Assim eu veria o que aquele bendito parâmetro tem de errado.
Para encerrar, eu substituí aquele primeiro "%" por "&" como me disse, mas não funcionou.
Agradeço pela ajuda e se estiver complicado de resolver, nem esquenta, vou continuar tentando por aqui mesmo. Acredito que seja só algum caractere que esteja atrapalhando.
Valeu mesmo!!
Skinner
#6
Posted 24/03/2008, 11:59
Puxa, cara, seria melhor aprender o ASP, pq esse código do DW é cabuloso xD. Minha conexão e abertura do BD são umas 4 linhas apenas. Depois eu posto um exemplo pra tu ver melhor.
/*DarkSign*/
Obrigado,
Hahaha... Não conheço ASP, mas bem que achei horroroso esse código. Acredito que em ASP não tenha esse monte de parâmetros esquisitos. Vou seguir a sua dica e aprender ASP. O problema é que eu não saberia como "mesclar" este código com o DW, pois foi nesta ferramenta que desenvolvi todo o resto do site, ao menos no início eu nem saberia onde colocar.
Enfim, obrigado pela ajuda!
Skinner
#8
Posted 24/03/2008, 17:21
Bem, eu já desenvolvi sistema usando o DW e ASP, n eh dificil n. Aprende o ASP e edita o codigo do DW. o DW pode ser aliado, se saber usar o código xD
/*DarkSign*/
Ok.
Vou baixar alguma apostila de ASP e tentar alterar o código acima.
Passei a noite inteira e fiquei até agora tentando trocar as variáveis pelo método de tentativa e erro, mas não deu certo.
Ah! Só uma coisa: qual é o comando para eu mostrar o conteúdo daquele SELECT na página? Sempe que eu mostro, aquele negócio me aparece com os pontos de interrogação, igual como está sendo movido para ele, ou seja, não estou conseguindo mostrar o conteúdo com os parâmetros da variável. Eu só queria ver a cláusula que é executada.
Tks again!
Skinner
#9
Posted 27/03/2008, 14:46
Após ter criado todos os parâmetros pelo Dreamweaver, não há como fugir, o negócio é alterar via código. Pois bem, aí vai o local exato onde deverá ser realizada a alteração:
Quebrar a cláusula SELECT ao meio, introduzindo o parâmetro diretamente após o WHERE e contatenando com o restante da instrução. Não esquecer do "&" antes do parâmetro.
Busca_Clientes_cmd.CommandText = "SELECT * FROM Clientes WHERE " & Busca_Clientes__ColunaTabela + " LIKE ? ORDER BY Nome_cli ASC"
Eliminar a declaração de "param1" e deixar apenas a segunda, porém renomeá-la de "param2" para "param1".
Busca_Clientes_cmd.Parameters.Append Busca_Clientes_cmd.CreateParameter("param1", 200, 1, 255, "%" + Busca_Clientes__ValorDigitado + "%") ' adVarChar
O restante permanecerá como estava.
O resultado completo e alterado é:
<%
Dim Busca_Clientes
Dim Busca_Clientes_cmd
Dim Busca_Clientes_numRows
Set Busca_Clientes_cmd = Server.CreateObject ("ADODB.Command")
Busca_Clientes_cmd.ActiveConnection = MM_produtec_conexao_STRING
Busca_Clientes_cmd.CommandText = "SELECT * FROM Clientes WHERE " & Busca_Clientes__ColunaTabela + " LIKE ? ORDER BY Nome_cli ASC"
Busca_Clientes_cmd.Prepared = true
Busca_Clientes_cmd.Parameters.Append Busca_Clientes_cmd.CreateParameter("param1", 200, 1, 255, "%" + Busca_Clientes__ValorDigitado + "%") ' adVarChar
Set Busca_Clientes = Busca_Clientes_cmd.Execute
Busca_Clientes_numRows = 0
%>
Espero que seja útil para alguém.
Skinner
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)