Ir para conteúdo

POWERED BY:

Arquivado

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

Blnrj

... not allowed when the object is closed

Recommended Posts

Boa noite, pessoal. Não consigo descobrir o que esta acontecendo com o script abaixo.Como solucionar este problema?ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed. /teste/adm/ex_uni_usu_ok.asp, line 35 Código:<%Dim uniuni=request("uni")set oConn = Server.CreateObject ("ADODB.Connection")oConn.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("../uteis/cf.mdb"))sql = "delete from usuarios where id_usuario="&uni&""Set rstemp = oConn.Execute(sql)if id_usuario=" " or rstemp.EOF thenResponse.Write "Registro Não Encontrado"END if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente:oConn.Execute(sql)Isso não vai dar certo :if id_usuario=" " or rstemp.EOF thenResponse.Write "Registro Não Encontrado"END ifPara isso dar certo defina um recordset para fazer o select.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, pessoal. Não consigo descobrir o que esta acontecendo com o script abaixo.Como solucionar este problema?ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed. /teste/adm/ex_uni_usu_ok.asp, line 35 Código:<%Dim uniuni=request("uni")set oConn = Server.CreateObject ("ADODB.Connection")oConn.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath("../uteis/cf.mdb"))sql = "delete from usuarios where id_usuario="&uni&""Set rstemp = oConn.Execute(sql)if id_usuario=" " or rstemp.EOF thenResponse.Write "Registro Não Encontrado"END if%>

EOF é uma propriedade do objeto Recorset... E você não está definindo nenhum nesse código.- Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando você executa um rs com uma instrução sql do tipo insert into, uptade e delete ele já é fechado automaticamente, você deleta e ele fecha o registro..uma sugestão para seu código:<%sqlsel = "select * from usuarios where id_usuario="&uni&""Set rstemp = oConn.Execute(sqlsel)if id_usuario=" " or rstemp.EOF thenResponse.Write "Registro Não Encontrado"rstemp.closeelserstemp.closesql = "delete from usuarios where id_usuario="&uni&""Set rstemp = oConn.Execute(sql)end if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

HiTech, pelo que já vi, isso só acontece quando você usa o DELETE, não é?

Delete, insert into e uptade, em suma, instruções que não retornam nada.O que um delete vai retornar ??...Até MaisDanilo Feltrini

Compartilhar este post


Link para o post
Compartilhar em outros sites

ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed. /teste/adm/ex_uni_usu_ok.asp, line 35

Cara eu só vejo esse erro quando você tenta fechar um recordset (RS.Close) após um DELETE. Qdo você está usando SELECT ou INSERT isso não acontece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed. /teste/adm/ex_uni_usu_ok.asp, line 35

Cara eu só vejo esse erro quando você tenta fechar um recordset (RS.Close) após um DELETE. Qdo você está usando SELECT ou INSERT isso não acontece.
Não cara... veja:UM RECORDSET é, resumidamente, uma variável que contém OS VALORES DE RETORNO DE UMA CONSULTA.uma consulta SÓ PODE SER FEITA COM UMA INSTRUÇÃO SELECT.logo, um RECORDSET só é gerado A PARTIR DE UMA INSTRUÇÃO SELECT.DELETE -> não retorna recordset;INSERT -> não retorna recordset;UPDATE -> não retorna recordset;Quer dizer, se você, em algum momento, precisar de alqum retorno imediato após uma dessas intruções... procure se informar sobre TRIGGERS...- Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed. /teste/adm/ex_uni_usu_ok.asp, line 35

Cara eu só vejo esse erro quando você tenta fechar um recordset (RS.Close) após um DELETE. Qdo você está usando SELECT ou INSERT isso não acontece.
Não cara... veja:UM RECORDSET é, resumidamente, uma variável que contém OS VALORES DE RETORNO DE UMA CONSULTA.uma consulta SÓ PODE SER FEITA COM UMA INSTRUÇÃO SELECT.logo, um RECORDSET só é gerado A PARTIR DE UMA INSTRUÇÃO SELECT.DELETE -> não retorna recordset;INSERT -> não retorna recordset;UPDATE -> não retorna recordset;Quer dizer, se você, em algum momento, precisar de alqum retorno imediato após uma dessas intruções... procure se informar sobre TRIGGERS...- Fernando Botelho
correto =P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando, eu sei que só o SELECT vai carregar o Recordset. Entretanto, tenho vários scripts com INSERT e UPDATE através de Recordsets, onde no fim eu dou uma instrução Close e tudo funciona bem.Entretanto, só quando há uma instrução DELETE ele não aceita o comando Close, dando o erro mencionado.você sabe por quê?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei parceiro... Por que DELETE; INSERT E UPDATE NÃO RETORNA RECORDSET!

Logo, o que você vai ter para fechar?

 

LEMBRE-SE:

 

as instruções DELETE; INSERT e UPDATE não necessitam de RECORDSET, e podem ser executadas a partir do método EXECUTE, do objeto CONNECTION, like this:

 

CONN.EXECUTE(INSTRUÇÃO);

 

- Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, parceiro, tudo beleza. Mas a pergunta é: POR QUE O ERRO SÓ ACONTECE COM O DELETE?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, parceiro, tudo beleza. Mas a pergunta é: POR QUE O ERRO SÓ ACONTECE COM O DELETE?

Putz... desisto... :huh: Se alguém conseguir SER MAIS CLARO QUE EU... agradeço...- Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, parceiro, tudo beleza. Mas a pergunta é: POR QUE O ERRO SÓ ACONTECE COM O DELETE?

Putz... desisto... :huh: Se alguém conseguir SER MAIS CLARO QUE EU... agradeço...- Fernando Botelho
Cara na boa:Se você não tem paciência, não devia estar aqui. Já ajudei muita gente aqui, inclusive através de email e ICQ e nunca fui grosso com niguém, por menos experientes que fossem.Em segundo o gênio aí é que não entende a pergunta. Tudo o que você disse eu sei. Até aí é normal. Vou ver se consigo explicar de uma forma que seu ego superestimado consiga entender:O erro é:

ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed.

Se você tem um script onde um Recordset é setado para INSERT ou UPDATE, o que não retorna Recordset (não precisa dizer de novo) e no fim você dá um comando ClOSE, o script roda sem erro.Entretanto, se você setar para DELETE, só aí, entendeu?, só com o DELETE, o erro aparece.Com todo o seu conhecimento, ficarei muito lisonjeado em ser digno de receber sua resposta.Se você ainda não entendeu, não se preocupe. Eu posso tentar explicar de novo, afinal é para isso que eu estou nesse fórum.ObrigadoManga

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com todo o seu conhecimento, ficarei muito lisonjeado em ser digno de receber sua resposta.

Ah cara, num faiz issu qui eu ficu sem graça... hihi.Enfim, não... não... Espero que sua dignidade não seja afetada por isso, mas não lhe darei a oportunidade de ver o TERCEIRO POST AO MESMO TÓPICO, DIZENDO A MESMA COISA.Opss... Fernando, onde estão seus modos, mininu... Diria minha mamãezinha... Então vejamos vai, vou contra minha vontade tentar explicar novamente (é que também sou iniciante na área saca parceiro).hummm.. talvez a instrução DELETE dê erro ao tentar fechar, por que ele seja o método que realmente faça com que o recset retorne nulo, visto que o registro que ele acabou de acessar, não existe mais... já as inst. insert e update, não fazem com que o registro que acabaram de manipular seja enviado para o espaço.Baahhh, será que é isso?E desculpe pela ignorância parceiro... Meu primeiro parágrafo a este post foi só uma piada... c mi perdôa g'amarada?Inté maisz...- Fernando Botelho

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.