Fórum Cursor not returned from query #343465

20/07/2007

0

Está dando este erro Cursor not returned from query, na linha :

Dm.cds_material.refresh;

Alguem sabe?

Vai aí o código:
----------------------------------------------------------------------------------------

transacao.TransactionID:=1;
transacao.IsolationLevel:=xilREPEATABLEREAD;
dm.CONEXAO.StartTransaction(transacao);
dm.SDS_MATERIAL.Close;
dm.SDS_MATERIAL.CommandText:=´update material set cod_ordenado = :cod_ordenado,´+
´ descricao = :descricao, tipo_conta = :tipo_conta,´+
´ un = :un, preco_unitario = :preco_unitario)´;
dm.SDS_MATERIAL.ParamByName(´cod_ordenado´).AsString:=cod.Text;
dm.SDS_MATERIAL.ParamByName(´descricao´).AsString:=descricao.Text;
dm.SDS_MATERIAL.ParamByName(´tipo_conta´).AsString:=un.Text;
dm.SDS_MATERIAL.ParamByName(´un´).AsString:=unitario.Text;
dm.SDS_MATERIAL.ParamByName(´preco_unitario´).AsString:=tipo.Text;
dm.SDS_MATERIAL.ExecSQL;
dm.CONEXAO.Commit(transacao);
dm.cds_material.Refresh;
DM.CDS_MATERIAL.Refresh;
limparClick(Sender);

----------------------------------------------------------------------------------------------


Jpauloss

Jpauloss

Responder

Post mais votado

31/07/2007

[quote:86e2105c12=´murilo-jau´]Ola, pessoal tenho uma aplicação de Delphi 7 com Firebird Embarcado (aplicativo e banco no mesmo PC) usando o DBExpress e este erro
´Cursor not returned from Query´
acontece na minha aplicação.[/quote:86e2105c12]

Esse erro acontece quando é feita uma tentativa de abrir (Open) um dataset que possui comandos DML (insert, update, delete).

Para esses comandos, utilize métodos de execução da instrução (Exec/ExecSQL/Execute, dependendo do componente utilizado)

Utilize o método open somente com instruções [i:86e2105c12]select[/i:86e2105c12].


Emerson Nascimento

Emerson Nascimento
Responder

Gostei + 1

Mais Posts

20/07/2007

Emerson Nascimento

você deve executar o refresh para atualizar os dados do dataset, porém seu dataset não tem dados, visto que o comando executado foi update. para comandos DML (update, delete, insert) não há retorno de dados (cursor), portanto não se atualiza os dados com refresh.
as duas linhas que contém refresh são totalmente desnecessárias - pra não dizer erradas.


Responder

Gostei + 0

20/07/2007

Jpauloss

você deve executar o refresh para atualizar os dados do dataset, porém seu dataset não tem dados, visto que o comando executado foi update. para comandos DML (update, delete, insert) não há retorno de dados (cursor), portanto não se atualiza os dados com refresh. as duas linhas que contém refresh são totalmente desnecessárias - pra não dizer erradas.


Então como irei atualizar o dbgrid no mesmo tempo de insert/update?
Só coloquei o refresh para atualizar o dbgrid na mesma hora que o usuario fosse inserindo e atualizando.
Como faço?


Responder

Gostei + 0

20/07/2007

Emerson Nascimento

não sei como você desenvolve, mas se está usando SQLDataset -> DatasetProvider -> ClientDataset, não é preciso fazer update explícito. deixe que o provider se encarregue disso. trabalhe com componentes data-ware e envie os dados para o servidor através do método ApplyUpdates do clientdataset.


Responder

Gostei + 0

31/07/2007

Murilo-jau

Ola, pessoal tenho uma aplicação de Delphi 7 com Firebird Embarcado (aplicativo e banco no mesmo PC) usando o DBExpress e este erro
´Cursor not returned from Query´
acontece na minha aplicação.

Ja tentei usando o quarteto sqlconnection , sqldataset , datasetprovider ,ClientDataset

assim como o SimpleDataset, mas nada resolve o erro.

é uma aplicação bem simples é só para abrir uma tabela e poder fazer alteração, nem inserir um novo registro eu não vou.

Seria alguma coisa haver com a questão de eu estar acessando o banco local e não remotamente ?

Por favor me ajudem, é importantíssimo.

Obrigado!


Responder

Gostei + 0

31/07/2007

Gyncowboy

O que vc pode fazer é dar um close e um open no ClientDataSet.

Assim ele atualizará.

O mesmo que o refresh, mas quando se tem um update ele pode não atualizar porque não retorna dados. Sendo assim a necessidade de se fechar e abrir a query original novamente.


Responder

Gostei + 0

31/07/2007

Murilo-jau

Posso passar por email para vcs um exemplo pois ainda não consegui resolver?????


Responder

Gostei + 0

31/07/2007

Emerson Nascimento

pode sim...


Responder

Gostei + 0

31/07/2007

Murilo-jau

O erro dá no SqlDatset


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar