Ir para conteúdo

Arquivado

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

Lajus

problemas com o Delete

Recommended Posts

Salve galera;

 

Antes de mais nada peço desculpas pela limitação que eu tenho com banco de dados, estou apenas começando então peço que vcs tenham um pouco de paciencia.

 

Minha dúvida é a seguinte:

 

Segue abaixo um código que recebe o "cod" através de um email de remoção de cadastro e altera a propriedade "info" da tabela "cad_amador" para o valor "Não". Isto esta funcionando perfeitamente.

 

CODE
<!--#include file="Connections/info.asp"-->

 

<%

intCodigo = Request("cod")

 

Select Case Request("perfil")

Case "amador"

strTabela = "cad_amador"

Case "juridica"

strTabela = "cad_juridico"

Case "profissionais"

strTabela = "cad_profissionais"

Case "revendedor"

strTabela = "cad_revendedor"

End Select

 

strSqlQuery = "UPDATE " & strTabela

strSqlQuery = strSqlQuery & " SET info = 'Não'"

strSqlQuery = strSqlQuery & " WHERE cod_cliente = '" & intCodigo & "'"

Conexao.Execute(strSqlQuery)

%>

Mas o que eu gostaria de fazer é deletar este registro do banco, já tentei fazer da seguinte forma mas não deu certo?

 

strSQLQuery = "DELETE * FROM strTabela WHERE cod_cliente = 'cod'"

Conexao.Execute(strSqlQuery)

 

Como meus conhecimentos em ms-sql são muito limitados, tenho medo de fazer testes com o "DELETE", se alguem puder dar uma força eu agadeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Lajus

Antes de mais nada peço desculpas pela limitação que eu tenho com banco de dados, estou apenas começando então peço que vcs tenham um pouco de paciencia.

Não se preocupe, o fórum eh justamente para tirar dúvidas e nos ajudar ^^

 

Com relacao ao delete, eh sempre cruel msm ter que deletar dados do db, mas me tira uma duvida. você da um update neste cara e depois quer deletar?!

Nao entendi muito bem

 

Abçs

 

Junior

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Junior, blza?

 

Na verdade não quero dar o update, quero apenas deletar este registro.

 

Sei que minha pergunta esta um pouco confusa, vou tentar explicar melhor::

O cara entra no site e digita o email dele em um form para solicitar a remoção de cadastro.

Uma mensagem de confirmação é enviado para o endereço de email do Fulano.

Ele clica no link e é direcionado para esta página, onde resgato o "cod" e já fico sabendo qual é a tabela que estava registrado.

Até ai esta tudo funcionando direitinho, só que atualmente estou apenas fazendo um update e alterando o campo "info" para "não", assim eu posso dar uma busca e deletar os registros manualmente, mas na verdade o certo seria já deletar este registro de uma vez.

 

Isso tudo é o medo de usar o DELETE indevidamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Lajus,

 

o medo eh bom neste caso, evita que você delete regitro errado hehehehe

 

Entao, neste caso você pode fazer ateh msm uma procedure ou rotina que apague isso, mas eu em particular nao uso palavras para este tipo de marcacao, costumo usar inteiro, como 0 (zero) e 1 (um), acho mais seguro.

Faz um teste com seu email para ver se rola, ou ateh msm em um ambiente de teste.

A sintaxe do delete esta correta

 

Abçs e boa sorte

 

Junior

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tentei fazer isso:

 

CODE
<%

intCodigo = Request("cod")

 

Select Case Request("perfil")

Case "amador"

strTabela = "cad_amador"

Case "juridica"

strTabela = "cad_juridico"

Case "profissionais"

strTabela = "cad_profissionais"

Case "revendedor"

strTabela = "cad_revendedor"

End Select

 

strSqlQuery = "DELETE * FROM strTabela WHERE cod_cliente = 'cod'"

Conexao.Execute(strSqlQuery)

%>

Mas deu o seguinte erro:

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver]

Line 1: Incorrect syntax near '*'. 

/sp/confirmacao_remover.asp, line 18

 

e a linha 18 é:

Conexao.Execute(strSqlQuery)

 

Depois tentei tirar o "*", ai apareceu o erro:

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e37'

[Microsoft][ODBC SQL Server Driver][sql Server]Invalid object name 'strTabela'.

/sp/confirmacao_remover.asp, line 18

 

Como seria a sintaxe correta para a "strTabela"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse é o nome da tabela mesmo?

 

outra coisa se o codigo no db for numerico termine a sql com

 

cod_cliente = & cod

em vez de

 

cod_cliente = 'cod'"

e se for texto

 

cod_cliente = '" & cod & "'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia !!!

 

Aproveitei essa sintaxe que esta funcionando para o "UPDATE":

 

strSqlQuery = "UPDATE " & strTabela

strSqlQuery = strSqlQuery & " SET info = 'Não'"

strSqlQuery = strSqlQuery & " WHERE cod_cliente = '" & intCodigo & "'"

Conexao.Execute(strSqlQuery)

 

e tentei alterar para a função "DELETE" da seguinte forma:

 

strSqlQuery = "DELETE FROM strTabela WHERE cod_cliente = '" & intCodigo & "'"

Conexao.Execute(strSqlQuery)

 

Mas ainda esta dando erro com essa variavel para a tabela, conforme esta abaixo:

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e37'

[Microsoft][ODBC SQL Server Driver]

Invalid object name 'strTabela'. 

/sp/confirmacao_remover.asp, line 18

 

Segue abaixo a sintaxe que cria a "strTabela":

 

Select Case Request("perfil")

Case "amador"

strTabela = "cad_amador"

Case "juridica"

strTabela = "cad_juridico"

Case "profissionais"

strTabela = "cad_profissionais"

Case "revendedor"

strTabela = "cad_revendedor"

End Select

Compartilhar este post


Link para o post
Compartilhar em outros sites

strSqlQuery = "DELETE FROM " & strTabela
strSqlQuery = strSqlQuery & " WHERE cod_cliente = '" & intCodigo & "'"
Conexao.Execute(strSqlQuery)

 

tenta isso ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Junior;

 

Não deu mais erro, porem o registro não foi deletado do banco.

 

Gostaria de tentar de uma maneira mais simples e mais lógica, minha idéia é colocar uma formulário p/ usuário digitar o e-mail e quando clicar em enviar, automaticamente exclua seu registro de todas as tabelas, ex.:

 

Formulário:

CODE
<form name="frmRemover" method="post" action="cad_remova02.asp">

<table width="400" border="0" cellspacing="0" cellpadding="0">

<tr>

<td height="35">E-mail:</td>

<td><input type="text" name="txtEmail" /></td>

</tr>

</table>

<label><input type="button" name="button" value="remover" onClick="formularioEnviar();" /></label>

cad_remova02.asp

CODE
<!--#include file="Connections/info.asp"-->

 

<%

strEmail = Request("txtEmail")

 

strSqlQuery = "DELETE FROM cad_amador WHERE e_mail = '" & strEmail & "'"

strSqlQuery = "DELETE FROM cad_juridico WHERE e_mail = '" & strEmail & "'"

strSqlQuery = "DELETE FROM cad_profissional WHERE e_mail = '" & strEmail & "'"

strSqlQuery = "DELETE FROM cad_revendedor WHERE e_mail = '" & strEmail & "'"

 

Conexao.Execute(strSqlQuery)

%>

Quando testei no servidor, não apresentou nenhum erro más não esta apagando o registro do banco, você sabe o que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

de um response.write em strSqlQuery e poste o resultado aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei fazer de outra maneira e agora quase deu certo:

 

Ficou assim:

 

<%

strEmail = Request("txtEmail")

strSqlQuery = "DELETE FROM cad_amador,cad_profissional,cad_juridico,cad_revendedor WHERE e_mail = '" & strEmail & "'"

Conexao.Execute(strSqlQuery)

set conexao = nothing

%>

 

O problema é que só esta apagando o registro na primeira tabela (cad_amador), como posso fazer para apagar o mesmo registro nas outras tabelas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade eu nem sei dar um "response.write em strSqlQuery", até tentei mas não rolou.

 

Mas a boa notícia é que consegui, não sei se é a forma correta, mas funcionou !!

 

Segue o código atualizado:

 

CODE
<%

strEmail = Request("txtEmail")

 

strSqlQuery1 = "DELETE FROM cad_amador WHERE e_mail = '" & strEmail & "'"

Conexao.Execute(strSqlQuery1)

 

strSqlQuery2 = "DELETE FROM cad_profissionais WHERE e_mail = '" & strEmail & "'"

Conexao.Execute(strSqlQuery2)

 

strSqlQuery3 = "DELETE FROM cad_juridico WHERE e_mail = '" & strEmail & "'"

Conexao.Execute(strSqlQuery3)

 

strSqlQuery4 = "DELETE FROM cad_revendedor WHERE e_mail = '" & strEmail & "'"

Conexao.Execute(strSqlQuery4)

 

set conexao = nothing

%>

 

Agradeço a todos pela força e aproveito para dizer que este é o melhor forum do Brasil, tentei tirar dúvidas em outros mas nunca me responderam, aqui eu já consegui resolver vários problemas em SQL e ASP e o mais importante é que estou começando a entender a lógica destas ferramentas graças a vcs.

 

Obs. Se alguem ainda tiver paciência para me dizer como aplico o response.write eu agradeço

 

Mais uma vez um grande abraço e espero um dia aprender o suficiente para ajudar a galera aqui do forum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o mais certo era fazer como fez mesmo

 

parabens e obrigado pelas palavras

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.