Ir para conteúdo

Arquivado

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

rafaeldupalio

excluir multiplos

Recommended Posts

Boa tarde,

 

galera tenho uma pagina que lista os itens em estoque e um checkbox(id=sequencia) ao final de cada linha, para excluir varios ao mesmo tempo o usuario marcar quantos ele quiser e clica no botao apagar(redireciona para a pagina multiplos_estoque).

A pagina multiplos_estoque é o seguinte codigo:

 

<%
Var_seq = request.form("sequencia")
if var_seq= "" then
response.write("erro")
Else
var_status=("BKP")
vSql = "DELETE * FROM TAB_QUADRO_BRASFELS WHERE CODIGO IN ("&var_seq&") AND STATUS='"&VAR_STATUS&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
end if
%>
Funcionava normalmente qnd usava o Access desde que migrei para o Mysql apresenta o seguinte erro:

Microsoft OLE DB Provider for ODBC Drivers erro '80040e21'

O driver ODBC não oferece suporte para as propriedades solicitadas.

/cyder/multidelete_estoque.asp, line 23

o nome da tabela esta correto e os campos da tabela tbm todos em caixa alta, aprendi na marra que o mysql difere maiusculo de minusculos.

alguem tem uma luz para o meu problema???

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todos os bancos mysql que tenho não diferenciam as caixas altas, podem ser alguma configuacao.

 

Tire esse in da sql, trata o array que vem com os codigos e apague um a um.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todos os bancos mysql que tenho não diferenciam as caixas altas, podem ser alguma configuacao.

 

Tire esse in da sql, trata o array que vem com os codigos e apague um a um.

Como ronaldo pode desenhar pra mim sou leigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
mysql difere maiusculo de minusculos
(...)
não diferenciam

se não me engano, no mysql isso depende do "charset" que você está usando; o "latin-1", por exemplo, você pode configurar a versão ci (case insensitive) ou não, é interessante verificar isso 1 pouco + a fundo, pq outros charsets fico devendo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vou te dar o código pronto, vou te ajudar. Se a idéia é aprender, a lógica é essa.

 

Quando você envia seus Ids para outra página eles estão assim:

1, 3, 5, 7 .... (para isso os checkbox tem que ter o mesmo nome)

 

Na pagina que que vai fazer o trabalho, fica assim:

-) pega os Ids, tira os espaços em branco de tudo

-) Cria uma array com o comando Split

-) Faça um for para percorrer os Id´s

for ...

 

Aqui você pega Id por ID

faça a SQL para ver se existe

existindo exclui

 

next

 

é fácil, na primeira impressão pode ser complicado, mas não é. além disso é pratico e não tem margem de erro, ja que esta fazendo a SQL para ver se o ID existe antes de excluir.

 

Outra dica: Vivemos em mundo que informações gira em torno de quase tudo. não exclua seus registros, nos meus bancos de dados, sempre crio um campo "Mostrar" e deixo sempre S, caso seja necessário a exclusão, coloco ele como N, assim ninguém vê, mas ele continua lá, amanha ou depois da uma ?¨&¨%$# tem como ir lá e pegar os dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso pode acontecer se você usar um objeto ADODB.Recordset adOpenStatic para abrir o Excel, ou usar um conjunto de registros adOpenKeyset para realizar a paginação,

Basicamente, certifique-se os métodos / propriedades que você está usando são suportadas pelo driver/provider, e você está usando para acessar seus dados.

Se você está executando um stored procedure, certifique-se de fazê-lo através do método() connection.execute , ao invés de um objeto de comando, e adicione as seguintes linhas de código para o início do seu processo:

SET ANSI_NULLS OFF
SET NOCOUNT ON

veja se você estiver usando ADODB.Recordset, e a metodologia AddNew / Update, Se você tiver certeza que estão corretas, certifique-se que você tem a versão mais recente do MDAC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vou te dar o código pronto, vou te ajudar. Se a idéia é aprender, a lógica é essa.

 

Quando você envia seus Ids para outra página eles estão assim:

1, 3, 5, 7 .... (para isso os checkbox tem que ter o mesmo nome)

 

Na pagina que que vai fazer o trabalho, fica assim:

-) pega os Ids, tira os espaços em branco de tudo

-) Cria uma array com o comando Split

-) Faça um for para percorrer os Id´s

for ...

 

Aqui você pega Id por ID

faça a SQL para ver se existe

existindo exclui

 

next

 

é fácil, na primeira impressão pode ser complicado, mas não é. além disso é pratico e não tem margem de erro, ja que esta fazendo a SQL para ver se o ID existe antes de excluir.

 

Outra dica: Vivemos em mundo que informações gira em torno de quase tudo. não exclua seus registros, nos meus bancos de dados, sempre crio um campo "Mostrar" e deixo sempre S, caso seja necessário a exclusão, coloco ele como N, assim ninguém vê, mas ele continua lá, amanha ou depois da uma ?¨&¨%$# tem como ir lá e pegar os dados.

beleza Ronaldo challenger accpet srsr, nem sei se escrevi certo obrigado por fazer isso por mim, assim que se aprende chega de blablabla e vamos lá ve se a ideia ta certa?

 

<%

var_seq = trim(request.form("sequencia")) 'removendo os espaços da sequencia.

arrseq = split(var_seq,",") 'separando os codigos da sequencia

for x = lbound(arrseq) to ubond(arrseq)

 

vSql = "DELETE * FROM TAB_QUADRO_BRASFELS WHERE CODIGO='"&arrseq(x)&"'"

Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

next

%>

 

Seria isso ronaldo?

Não vou te dar o código pronto, vou te ajudar. Se a idéia é aprender, a lógica é essa.

 

Quando você envia seus Ids para outra página eles estão assim:

1, 3, 5, 7 .... (para isso os checkbox tem que ter o mesmo nome)

 

Na pagina que que vai fazer o trabalho, fica assim:

-) pega os Ids, tira os espaços em branco de tudo

-) Cria uma array com o comando Split

-) Faça um for para percorrer os Id´s

for ...

 

Aqui você pega Id por ID

faça a SQL para ver se existe

existindo exclui

 

next

 

é fácil, na primeira impressão pode ser complicado, mas não é. além disso é pratico e não tem margem de erro, ja que esta fazendo a SQL para ver se o ID existe antes de excluir.

 

Outra dica: Vivemos em mundo que informações gira em torno de quase tudo. não exclua seus registros, nos meus bancos de dados, sempre crio um campo "Mostrar" e deixo sempre S, caso seja necessário a exclusão, coloco ele como N, assim ninguém vê, mas ele continua lá, amanha ou depois da uma ?¨&¨%$# tem como ir lá e pegar os dado

Ronaldo fiz assim:

 

var_seq = trim(request.form("sequencia")) 'removendo os espaços da sequencia.
arrseq = split(var_seq,",") 'separando os codigos da sequencia
for x = lbound(arrseq) to Ubound(arrseq)'for percorrendo os id's
vSql="select * FROM TAB_QUADRO_BRASFELS WHERE CODIGO='"&arrseq(x)&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
if myRst.BOF and myRst.EOF then

Response.Write("<script language='JavaScript'>alert('Item não Existe em Estoque!');location.href='estoque_bf_listar.asp';</script>")

else

vSql="DELETE TAB_QUADRO_BRASFELS WHERE CODIGO='"&arrseq(x)&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3

end if

next

Aparece o seguinte erro:

Microsoft OLE DB Provider for ODBC Drivers erro '80040e21'

O driver ODBC não oferece suporte para as propriedades solicitadas.

/cyder/multidelete_estoque.asp, line 30

Compartilhar este post


Link para o post
Compartilhar em outros sites

possíveis erros:

 

1- O trim remove apenas espaços no final da string, tem que usar o replace tb

2-) tire isso

Response.Write("<script language='JavaScript'>alert('Item não Existe em Estoque!');location.href='estoque_bf_listar.asp';</script>")

não tem lógica mostrar um alerta para cada ID em uma pagina de processamento. se o usuário não clicar?

 

Obs: não tem o ID, ótimo, passa e vai embora. essa SQL nen seria tão necessária, ja que o ID veio de uma lista (e claro tem esse registro), essa SQL é só para prevenir.

faz as alterações 1 e 2 e testa que tem que dar. acredito que esse erro seja porque o ID deve estar ido com espaço no final porque não usou o replace depois do trim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nunca usei o replace nao, o javascript era mais pra ver se passou por ali mesmo depois ia tirar pq realmente nao tem logica.

var_seq = trim(request.form("sequencia")) 'removendo os espaços da sequencia.
arrseq = split(var_seq,",") 'separando os codigos da sequencia
for x = lbound(arrseq) to Ubound(arrseq)'for percorrendo os id's
vSql="select * FROM TAB_QUADRO_BRASFELS WHERE CODIGO='"&arrseq(x)&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
if myRst.BOF and myRst.EOF then
vSql="DELETE TAB_QUADRO_BRASFELS WHERE CODIGO='"&arrseq(x)&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
end if
next

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca isso em uma variavel no começo

request.form("sequencia")

 

depois faz o trim

depois

if variavel <> "" then

variavel = Replace(request.form("sequencia")" ","")

end if

 

e não esqueça de dar um response.write na SQL para ver o que esta passando, assim é mais fácil de debugar o erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esqueci de dizer:

como vc nunca usou o replace, cuidado com ele, para dar erro é muito fácil.

toda vez que for usar o replace o campo/variavel não pode ser vazio (null)

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca isso em uma variavel no começo

request.form("sequencia")

 

depois faz o trim

depois

if variavel <> "" then

variavel = Replace(request.form("sequencia")" ","")

end if

 

e não esqueça de dar um response.write na SQL para ver o que esta passando, assim é mais fácil de debugar o erro

ronaldo fiz um pequena mudança ja que recolhia o campo antes coloquei a variavel direto no replace ficou assim:

 

var_seq = request.form("sequencia")'Recolhendo dados do formulario
var_seq = trim(var_seq)'removendo os espaços da sequencia.
if var_seq <> "" then 'Condicional verifica se a variavel esta vazia
var_seq = Replace(var_seq," ","") ' Comando replace deleta os espaços vazios
end if
arrseq = split(var_seq,",") 'separando os codigos da sequencia
for x = lbound(arrseq) to Ubound(arrseq)'for percorrendo os id's
vSql="DELETE FROM TAB_QUADRO_BRASFELS WHERE CODIGO ='"&arrseq(x)&"'" 'deleta as linhas do banco que for igual ao arrseq
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
next
Response.Write("<script language='JavaScript'>alert('Itens Excluídos com sucesso!');location.href='estoque_bf_listar.asp';</script>")

 

O meu erro era que estava colocando * na instrução sql mas minha duvida qnd coloco o comando

vSql="DELETE FROM TAB_QUADRO_BRASFELS WHERE CODIGO ='"&arrseq(x)&"'" ele deleta toda a linha ou so o campo codigo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo....

 

única diferença que estou usando para inserir, no seu caso apenas troque a string de INSERt para DELETE

if qtd_produtos = "" then
Response.write("erro..."
response.redirect("outra_pagina.asp")
else
qtd_produtos = split(Request.Form("qtd_produtos"),",")
if qtd_produtos = ""
produtos= Split(Request.Form("produtos"), ",")

For i = 1 To Request.Form("produtos").Count

Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"
SQL = "INSERT INTO lista (lista_prodID,lista_quant) Values ('"&request.form("produtos")(i)&"','"&request.form("qtd_produtos")(i)&"')"

OUTRO EXEMPLO

<%
dim conn
'Criamos o objeto de conexão
Set conn = Server.CreateObject("ADODB.Connection") 
 
'Abrimos uma conexão com o banco de dados - [IMPORTANTE] altere os dados abaixo com as informações de sua base de dados
conn.Open("DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;PORT=3306;DATABASE=database;USER=root;PASSWORD=211613;OPTION=3;")

checkbox = request.form("teste").Count

response.Write("<br>"&checkbox&"<br />")

for i = 0 to checkbox-1

'response.Write(split(Request.Form("teste"),",")(i)&"<br />")

set inerir = conn.execute("insert into arquivomb (arquivo,notafiscal) values ("&split(Request.Form("teste"),",")(i)&","&Request.Form("users")&")")

next

response.Write("Cadastrado")

conn.Close()
'Destruímos o objeto
Set conn = Nothing

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

olha este exemplo....

 

única diferença que estou usando para inserir, no seu caso apenas troque a string de INSERt para DELETE

if qtd_produtos = "" then
Response.write("erro..."
response.redirect("outra_pagina.asp")
else
qtd_produtos = split(Request.Form("qtd_produtos"),",")
if qtd_produtos = ""
produtos= Split(Request.Form("produtos"), ",")

For i = 1 To Request.Form("produtos").Count

Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"
SQL = "INSERT INTO lista (lista_prodID,lista_quant) Values ('"&request.form("produtos")(i)&"','"&request.form("qtd_produtos")(i)&"')"

OUTRO EXEMPLO

<%
dim conn
'Criamos o objeto de conexão
Set conn = Server.CreateObject("ADODB.Connection") 
 
'Abrimos uma conexão com o banco de dados - [IMPORTANTE] altere os dados abaixo com as informações de sua base de dados
conn.Open("DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;PORT=3306;DATABASE=database;USER=root;PASSWORD=211613;OPTION=3;")

checkbox = request.form("teste").Count

response.Write("<br>"&checkbox&"<br />")

for i = 0 to checkbox-1

'response.Write(split(Request.Form("teste"),",")(i)&"<br />")

set inerir = conn.execute("insert into arquivomb (arquivo,notafiscal) values ("&split(Request.Form("teste"),",")(i)&","&Request.Form("users")&")")

next

response.Write("Cadastrado")

conn.Close()
'Destruímos o objeto
Set conn = Nothing

%>

Xambu criei outro topico para saber como contabilizar as linhas de um select ou consulta, contar quantas linhas foram encontradas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A SQL DELETE exclui o registro oras. não entendi essa de excluir só o código

 

vai excluir o registro com a condição where

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.