Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Caros amigos,
eu tenho isso aqui que vem de uma consulta: 55,82,78,143,64,170,
São IDs. Preciso pegar esse esses IDs e eliminá-los de outra consulta que está em outra tabela.
Isto é, preciso mostrar resultados de uma tabela eliminando os IDs acima, eles não vão ser fixos vão variar.
Como eu faço isso? Alguém sabe?
*Coloquei a "," nos IDs porque achei que poderia fazer um Split mas não deu certo.
SQL = "SELECT * from matricula where id <> " & arrayIdAluno(0) & " and idperiodo = " & request.queryString("id_periodo") & " and educacaoid = " & request.queryString("id_educacao") & " order by aluno"
Obrigado pela atenção de todos.
Vamos a um exemplo:
Vet =split("55,82,78,143,64,170,",",")
For i =0 to ubound(vet) -1
SQL ="delete from tabela where campo =" & vet(i)
Execute a sql
Next
Desta maneira vc apaga os índices desta outra tabela...
Att;
É claro que no split VC irá colocar uma variável
relendo que vc quer é não exclui-los mas simplesmente não mostrar esses IDs... entendi...
Ja que vc montou aqueles ids separando por virgula, mude para campoDaoutraconsulta <> seuId or campoDaoutraconsulta <> seuId or...
depois vc concatena com a sua SQL incompleta que estará esperando por essa variável...
deu para entender?
estou escrevendo no table e é horrível... depois posto um exemplo mas da para fazer sim....
att;
Caro Gustavo,
realmente eu não quero excluir apenas quero que não apareça os IDs que mostrei acima.
São duas tabelas cujo os IDs se cruzam e uma não pode mostrar o ID da outra.
É assim: Primeiro eu colo os IDs do aluno em tabelam de matricula, aquele que já está matriculado não pode aparecer mas tive que fazer em tabelas diferentes agora preciso cruzar os dados e não mostrar em próxima etapa quem está matriculado.
Para ficar melhor, vc pode listar os Id´s que tem com uma opção de visualizar os mesmos e com um checkbox para selecionar o que quer excluir, fica mais gerenciável. Tipo assim:
Listagem
<%
'Abre o objeto de conexão
Set conObj = Server.CreateObject("ADODB.Connection")
conObj.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database.mdb") & ";"
'Abre o objeto recordset
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM sample"
rs.Open sql,conObj,3,3
'Move para o primeiro registro
rs.MoveFirst
'Imprime a tag de fonte. Apenas para controle de HTML
Response.write("<font face=""verdana"" size=""2"">")
'Imprime os resultados com o link para deleção
While not rs.EOF
%>
Registro <b><%=rs("id")%></b>: <%=rs("nome")%> - <a href="apaga_main.asp?id=<%=rs("id")%>">Apagar registro</a>
<p>'Termina o loop criado pelo while
Wend
'Fecha o objeto recordset e o mata
rs.Close
Set rs = nothing
'Fecha o objeto de conexão e o mata
conObj.Close
Set conObj = nothing
%>
Excluir
<%
Set conObj = Server.CreateObject("ADODB.Connection")
conObj.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database.mdb") & ";"
id = Request.QueryString("id")
sql = "DELETE FROM sample WHERE id=" & id
conObj.Execute(sql)
conObj.Close
Set conObj = nothing
Response.Redirect("apaga_success.asp")
%>
Sucesso
<html>
<body>
O processo de Exclusãofoi realizado.
' aqui vc pode dar Response.redirect com um parametro na querysting e recuperar na page principal e abrir um pop-up que se fecha após x segundos
</body>
</html>Caro xanburzum,
não quero excluir só que que nesta select abaixo não mostre os ID que puxei de outra tabela:
SQL = "SELECT * from matricula where id <> " & arrayIdAluno(0) & " and idperiodo = " & request.queryString("id_periodo") & " and educacaoid = " & request.queryString("id_educacao") & " order by aluno"
Eu tenho 2 tabelas:
turmas_alunos
matricula
Em um determinado arquivo ASP eu tenho que listar os alunos da tabela "matricula" retirando os alunos que estão na tabela "turmas_alunos".
Cruzamento de dados para ser mais exato e o comparador é o ID, mas não sei como fazer isso.
Vamos ao seu exemplo:
seu dado antigo
ids = "55,82,78,143,64,170,"
ficará assim!!
ids = "id <> 55 or id <> 82 or id <> 78 or id <> 143 or id <> 64 or id <> 170 or id"
no caso troquei a "vírgula" por "id <>"
onde o último não nos interessa que vamos remove-lo
ids = left(ids,len(ids)-5)
agora vamos concatenar na sua sql
sua SQL antiga
SQL = "SELECT * from matricula where id <> " & arrayIdAluno(0) & " and idperiodo = " & request.queryString("id_periodo") & " and educacaoid = " & request.queryString("id_educacao") & " order by aluno"
sua nova SQL
SQL = "SELECT * from matricula where " & ids & " and idperiodo = " & request.queryString("id_periodo") & " and educacaoid = " & request.queryString("id_educacao") & " order by aluno"
reparou a troca que fiz deixei em negrito?
desse jeito os ids variáveis não rão aparecer..
qualquer dúvida é só postar...
Caro gustavo,
consegui resolver com a sua ajuda, mas não pode ser "or" tem que ser "and". Ai deu certo.
Veja o código:
sqlcount2 = "SELECT id_aluno from turmas_alunos where id_turma = " & request.queryString("id")
set rscount2 = conn_s.execute(sqlcount2)
while not rscount2.eof
id_aluno = "id <> " & rscount2("id_aluno") & ""
id_prepara = "" & id_aluno & " and "
id_concatenado = id_concatenado & "" & id_prepara & ""
rscount2.movenext
wend
set rscount2 = nothing
end if
id_final = left(id_concatenado,len(id_concatenado)-4)
SQL = "SELECT * from aspx_matricula where " & id_final & " and idperiodo = " & request.queryString("id_periodo") & " and educacaoid = " & request.queryString("id_educacao") & " order by aluno"
Obrigado pela ajuda!
para não excluir os id´s, para por exemplo precisar deles futuramente, apenas insira uma flag no seu bd para os antigos alunos estarem finalizados ou inativos, é assim que deixo os alunos antigos. Pois este aluno pode futuramente retornar.
show de bola Inside é isso ai!! realmente deve ser and mesmo por que vc não queria tirar um ou outro.... eram todos... por isso o and.
qualquer dúvida é só postar...
VocÊ quer fazer um filtro baseado em que, por favor esclareça um pouco mais.