Erro: Cannot perform this operation on a closed dataset
olá. Bem, vamos lá... Banco FireBirde 2.0 e IBExpert, Delphi7. Antes estava usando IBDataBase, IBTransaction, IBTable com TDataSource.
Para efetuar o delete de um registro eu utilizava o seguinte:, perfeito!
Agora eu implementei uma [b]query[/b].Para deletar faço o seguinte:
Normal né! Só que quando executo ele exclui o registro, no entanto apresenta o erro:
[b]Cannot perform this operation on a closed dataset[/b]
Será que alguém poderia me ajudar?
Para efetuar o delete de um registro eu utilizava o seguinte:
FRM_DM.IB_SAIDA_FUNC.Delete; FRM_DM.IBTransaction1.CommitRetaining;
Agora eu implementei uma [b]query[/b].Para deletar faço o seguinte:
FRM_DM.query1.Close; FRM_DM.query1.Sql.Clear; FRM_DM.query1.Sql.Add('Delete from MATERIAIS_SAIDA'); FRM_DM.query1.Sql.Add('where DESCRIO =:descricao'); FRM_DM.query1.ParamByName('descricao').AsString := FRM_DM.IB_ESTOQUEDESCRIO.Text; FRM_DM.query1.execsql;
Normal né! Só que quando executo ele exclui o registro, no entanto apresenta o erro:
[b]Cannot perform this operation on a closed dataset[/b]
Será que alguém poderia me ajudar?
Fernando Souza
Curtidas 0
Melhor post
Joel Rodrigues
19/09/2012
Conseguiu resolver o problema?
Pedimos que avise para que o tópico possa ser encerrado.
Pedimos que avise para que o tópico possa ser encerrado.
GOSTEI 1
Mais Respostas
Joel Rodrigues
06/09/2012
Se o registro está sendo excluído, indica que o ExecSQL está sendo executado. Então o erro pode estar em outro ponto. Depure para identificar a linha onde isso ocorre.
Boa sorte.
Boa sorte.
GOSTEI 0
Cid Maia
06/09/2012
Se o registro está sendo excluído, indica que o ExecSQL está sendo executado. Então o erro pode estar em outro ponto. Depure para identificar a linha onde isso ocorre.
Boa sorte.
Boa sorte.
Estou com esse mesmo problema a dias e nao consigo resolver...vc pode me ajudar
GOSTEI 0
Ricardo
06/09/2012
Seria interessante postar o código antes de depois de deletar, porém o erro está em algum trecho de código após o ExecSQL. Quando a linha ExecSQL. é executada a query permanece fechada e algum trecho esta tentando acessar a mesma.
Se logo após o ExecSQL for feito um open na query e o erro parar e justamente porque algo está tentando acessar a query depois da operação para deletar.
Se logo após o ExecSQL for feito um open na query e o erro parar e justamente porque algo está tentando acessar a query depois da operação para deletar.
GOSTEI 0
Guilherme
06/09/2012
eu tô boiando.
outro form
alguém dá uma luz aqui tipo uma tempestade solar pelo menos. Porque eu tenho que usar classes no meu trabalho da faculdade. Tá. Daí eu fiz a classe padrão e tô herdando todo formulário dela. Basicamente a classe padrão é inserir, alterar, excluir e fechar AH e gravar ou cancelar. Deu pra ter uma ideia?
daí eu executo o delphi, ele entra, eu executo a compilação, abre o aplicativo, eu clico pra abrir o formulário CIDADES e dá um erro. Até aí tudo bem porque acho que é do COMODO FIREWALL. Preciso dele senão o delphi não funciona. enfim
depois eu vou dar um insert pra habilitar o gravar e ele fica dizendo que não é possível em um closed dataset
eu não faço nem ideia de como depurar isso porque não ensinaram na faculdade nada de depuração.
Era só os códigos prontos e faça um formulário parecido. Daí agora tô no estágio da faculdade apanhando muito e literalmente patinando no mesmo lugar. O chefe no estágio só usa clipper e um dbf. Ele tem um esquema de compilar para x64 por meio de uma aplicação lá e daí até roda no windows 10.
O que eu faço? Tenho um mês pra terminar o aplicativo, fazer testes, validar tudo, e criar a documentação, manual do sistema e do usuário. É impossível. Só se eu já dominasse delphi, mas nãooooo. Ah meu, tô chorando aqui de desespero.
procedure Tf_cidades.FormCreate(Sender: TObject); begin inherited; f_cidades.tabela:= 'cidades'; f_cidades.campo_chave:= 'codcidade'; f_cidades.campo_pesquisa:= 'nome'; f_cidades.carregar_dados(''); end;
outro form
procedure Tf_cadpadrao.carregar_dados(p: string); begin qdados.SQL.Clear; qdados.SQL.Add('select * from ' +tabela+ ' where ' +campo_chave+ ' like ' +quotedstr('%'+p+'%')+ ' order by ' +campo_pesquisa); qdados.Open; end;
alguém dá uma luz aqui tipo uma tempestade solar pelo menos. Porque eu tenho que usar classes no meu trabalho da faculdade. Tá. Daí eu fiz a classe padrão e tô herdando todo formulário dela. Basicamente a classe padrão é inserir, alterar, excluir e fechar AH e gravar ou cancelar. Deu pra ter uma ideia?
daí eu executo o delphi, ele entra, eu executo a compilação, abre o aplicativo, eu clico pra abrir o formulário CIDADES e dá um erro. Até aí tudo bem porque acho que é do COMODO FIREWALL. Preciso dele senão o delphi não funciona. enfim
depois eu vou dar um insert pra habilitar o gravar e ele fica dizendo que não é possível em um closed dataset
eu não faço nem ideia de como depurar isso porque não ensinaram na faculdade nada de depuração.
Era só os códigos prontos e faça um formulário parecido. Daí agora tô no estágio da faculdade apanhando muito e literalmente patinando no mesmo lugar. O chefe no estágio só usa clipper e um dbf. Ele tem um esquema de compilar para x64 por meio de uma aplicação lá e daí até roda no windows 10.
O que eu faço? Tenho um mês pra terminar o aplicativo, fazer testes, validar tudo, e criar a documentação, manual do sistema e do usuário. É impossível. Só se eu já dominasse delphi, mas nãooooo. Ah meu, tô chorando aqui de desespero.
GOSTEI 0
Vicente Santos
06/09/2012
cade os programadores da dev? o meu tambem esta dando "cannot peform this operation on a closed dataset quando vou salvar pelo execsql
GOSTEI 0
Emerson Nascimento
06/09/2012
cade os programadores da dev? o meu tambem esta dando "cannot peform this operation on a closed dataset quando vou salvar pelo execsql
Vicente, pode passar o trecho de código onde ocorre a mensagem ?
GOSTEI 0