Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
olá,
estou com uma pequena dúvida...
preciso fazer uma busca pelo nome do funcionário(name_employee), mas quando digito o nome desejado, são mostrados os registros de todos os funcionários! deveria ser mostrado somente o funcionário q foi digitado, ou nomes q continham a palavra digitada.
li alguns tópicos e aparentemente meu cód está correto, mas não funciona...
alguém pode me ajudar?
código ASP:
<%
name_employee=request("name_employee")
Set rs = Server.CreateObject ("ADODB.RecordSet")
sql="call sp_002_select_eta_employee('"&name_employee&"%')"%>
<!-- #include file="../_includes/_functions_data_grid.asp" -->
<% While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) %>
<tr class="Table_tr" >
<td class="Table_td" bgcolor="<%=color%>"><div align="center"><a href="#" onclick="makeRequest('update_employee.asp?cod=<%=Recordset1.fields(0)%>','content', 'get', '')"><%=Recordset1.fields(0)%></a></div></td>
<td class="Table_td" width="30%"><div align="center"><%=Recordset1.fields(1)%></div></td>
<td class="Table_td" width="14%"><div align="center"><%=Recordset1.fields(2)%></div></td>
<td class="Table_td" width="12%"><div align="center"><%=Recordset1.fields(3)%></div></td>
<td class="Table_td" width="8%"><div align="center"><%=Recordset1.fields(4)%></div></td>
<td class="Table_td" width="30%"><div align="center"><%=Recordset1.fields(5)%></div></td>
</tr>código da procedure sp_002_select_eta_employee:
CREATE PROCEDURE etadb.sp_002_select_eta_employee (in param1 char(255))
BEGIN
select *
from eta_employee ee
where ee.name_employee like param1;uso o MySQL
muitas vezes ao inves de criar uma simples consulta utiliando Stored Procedure, você pode executar direto no metodo execute do objeto recordset:
<!--#include file="conn/conexao1.asp"-->
<% call abreconexao
'crio o rs
set rs=Server.CreateObject("ADODB.Recordset")
'crio o SQL
SQL="SELECT * FROM login ORDER BY login"
rs.open SQL,conexao,1,3
%>muitas vezes ao inves de criar uma simples consulta utiliando Stored Procedure, você pode executar direto no metodo execute do objeto recordset:
<!--#include file="conn/conexao1.asp"-->
<% call abreconexao
'crio o rs
set rs=Server.CreateObject("ADODB.Recordset")
'crio o SQL
SQL="SELECT * FROM eta_employee WHERE name_employee like '%"& param1 &"%' ORDER BY name_employee"
rs.open SQL,conexao,1,3
%>eu preciso utilizar procedure mesmo
deixei a procedure assim:
DELIMITER $$
DROP PROCEDURE IF EXISTS etadb.sp_002_select_eta_employee $$
CREATE PROCEDURE etadb.sp_002_select_eta_employee(in param1 char(255))
BEGIN
SELECT * FROM eta_employee WHERE name_employee like '%"& param1 &"%' ORDER BY name_employee;
END $$
DELIMITER;
mas quando faço a busca, ele volta a tela em branco.
não faço procedures em mysql, em sql server seria assim para este caso
SELECT * FROM eta_employee WHERE name_employee like '%' + @param1 + '%' ORDER BY name_employee;
imagino que no mysql seja
SELECT * FROM eta_employee WHERE name_employee like CONCAT('%', param1, '%') ORDER BY name_employee;
Segue link como guia do mysql http://dev.mysql.com/doc/refman/4.1/pt/create-procedure.html
SELECT * FROM eta_employee WHERE name_employee like CONCAT('%', param1, '%') ORDER BY name_employee;
coloquei isso, mas ela ainda continua ignorando o nome digitado... quando clico no botão, aparecem o registro de todos os funcionários.
achei o problema...
obrigado aos que ajudaram!
qual banco?
ao meu ver sua procedure está errada, está faltando apóstofro e o percent