cursor not returned from query

Delphi

24/10/2008

Boa Tarde !!

Ja fiz varias pesquisas no forum mas não achei nenhuma solução mais concreta sobre este assunto.

Estou usando D7 + DBExpress + Firebird 2.0

Para as minhas pesquisas eu uso o commandtext do clientdataset com parametros. Até hoje estava funcionando tudo OK até eu começar a usar o comando UPDATE no CDS, sempre na hora de ativar o CDS ele gera a seguinte mensagem de erro:

cursor not returned from query

Tanto usando o componente QUERY (dbx) quanto o CDS ele gera este erro. Ja foi sugerido para deixar tudo em maiusculo, mas não houve sucesso, e outras tentativas sem sucesso.

No console do IBEXPERT por exemplo eu executo o comando e ele funciona perfeitamente, mas na hora de jogar no DELPHI..morreu....

Se alguem puder dar uma luz....eu agradeço muito...........

Abraços.


Badboysjc

Badboysjc

Curtidas 0

Respostas

Badboysjc

Badboysjc

24/10/2008

Boa Tarde !! Ja fiz varias pesquisas no forum mas não achei nenhuma solução mais concreta sobre este assunto. Estou usando D7 + DBExpress + Firebird 2.0 Para as minhas pesquisas eu uso o commandtext do clientdataset com parametros. Até hoje estava funcionando tudo OK até eu começar a usar o comando UPDATE no CDS, sempre na hora de ativar o CDS ele gera a seguinte mensagem de erro: cursor not returned from query Tanto usando o componente QUERY (dbx) quanto o CDS ele gera este erro. Ja foi sugerido para deixar tudo em maiusculo, mas não houve sucesso, e outras tentativas sem sucesso. No console do IBEXPERT por exemplo eu executo o comando e ele funciona perfeitamente, mas na hora de jogar no DELPHI..morreu.... Se alguem puder dar uma luz....eu agradeço muito........... Abraços.


UP


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/10/2008

comandos DML devem ser executados, e não abertos.
use
.Execute ou
.ExecSQL

.Open serve apenas para [b:e478e332ae]select[/b:e478e332ae]


GOSTEI 0
Badboysjc

Badboysjc

24/10/2008

comandos DML devem ser executados, e não abertos. use .Execute ou .ExecSQL .Open serve apenas para [b:8ded288beb]select[/b:8ded288beb]


Caro Emerson, Boa Tarde !!

estou usando da seguinte forma.

with dmprincipal.sqlqryClientes do
Begin
sqlqry.close;
sqlqry.sql.clear;
sqlqry.sql.add(´update set clientes status =´T´ where bairro =:pbairro´)
sqlqry.ExecSQL
end;

Ainda continua o erro.

Se puder dar uma força obrigado.

Abraços.


GOSTEI 0
Martins

Martins

24/10/2008

[quote:4029ec2956=´emerson.en´]comandos DML devem ser executados, e não abertos. use .Execute ou .ExecSQL .Open serve apenas para [b:4029ec2956]select[/b:4029ec2956]


Caro Emerson, Boa Tarde !!

estou usando da seguinte forma.

with dmprincipal.sqlqryClientes do
Begin
sqlqry.close;
sqlqry.sql.clear;
sqlqry.sql.add(´update set clientes status =´T´ where bairro =:pbairro´)
sqlqry.ExecSQL
end;

Ainda continua o erro.

Se puder dar uma força obrigado.

Abraços.[/quote:4029ec2956]

Já tentou assim:
with dmprincipal.sqlqryClientes do
Begin
sqlqry.close;
sqlqry.sql.clear;
sqlqry.sql.add(´UPDATE CLIENTES SET STATUS =´T´ WHERE BAIRRO =:PBAIRRO´)
sqlqry.ExecSQL
end;


Boa sorte.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/10/2008

[quote:e747394bab=´emerson.en´]comandos DML devem ser executados, e não abertos. use .Execute ou .ExecSQL .Open serve apenas para [b:e747394bab]select[/b:e747394bab]


Caro Emerson, Boa Tarde !!

estou usando da seguinte forma.

with dmprincipal.sqlqryClientes do
Begin
sqlqry.close;
sqlqry.sql.clear;
sqlqry.sql.add(´update set clientes status =´T´ where bairro =:pbairro´)
sqlqry.ExecSQL
end;

Ainda continua o erro.

Se puder dar uma força obrigado.

Abraços.[/quote:e747394bab]

você está usando um parâmetro (pbairro) mas não o está preenchendo. outra coisa, já observada pelo Martins: a sintaxe está errada.
deveria ser assim:
with dmprincipal.sqlqryClientes do
Begin
  sqlqry.close;
  sqlqry.sql.clear;
  sqlqry.sql.add(´update CLIENTES set status =´T´ where bairro =:pbairro´)
  sqlqry.params.parambyname(´pbairro´).asstring := BAIRRO_DESEJADO; //** falta esta linha**//
  sqlqry.ExecSQL;
end;



GOSTEI 0
Badboysjc

Badboysjc

24/10/2008

[quote:8021504602=´badboysjc´][quote:8021504602=´emerson.en´]comandos DML devem ser executados, e não abertos. use .Execute ou .ExecSQL .Open serve apenas para [b:8021504602]select[/b:8021504602]


Caro Emerson, Boa Tarde !!

estou usando da seguinte forma.

with dmprincipal.sqlqryClientes do
Begin
sqlqry.close;
sqlqry.sql.clear;
sqlqry.sql.add(´update set clientes status =´T´ where bairro =:pbairro´)
sqlqry.ExecSQL
end;

Ainda continua o erro.

Se puder dar uma força obrigado.

Abraços.[/quote:8021504602]

você está usando um parâmetro (pbairro) mas não o está preenchendo. outra coisa, já observada pelo Martins: a sintaxe está errada.
deveria ser assim:
with dmprincipal.sqlqryClientes do
Begin
  sqlqry.close;
  sqlqry.sql.clear;
  sqlqry.sql.add(´update CLIENTES set status =´T´ where bairro =:pbairro´)
  sqlqry.params.parambyname(´pbairro´).asstring := BAIRRO_DESEJADO; //** falta esta linha**//
  sqlqry.ExecSQL;
end;
[/quote:8021504602]

Valeu amigos !!

Estava faltando o parametro. e só pra finalizarmos de vez, tem como SETAR dos campos ao mesmo tempo com um UPDATE, que eu pesquisei e me perdi, que não tinha usado ainda este comando.

Obrigado e Abraços ao dois.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/10/2008

setar 2 campos ao mesmo tempo?

tem sim:
with dmprincipal.sqlqryClientes do
Begin
  sqlqry.close;
  sqlqry.sql.clear;
  sqlqry.sql.add(´update CLIENTES set status =´T´, distancia = 30 where bairro =:pbairro´)
  sqlqry.params.parambyname(´pbairro´).asstring := BAIRRO_DESEJADO; //** falta esta linha**//
  sqlqry.ExecSQL;
end;



GOSTEI 0
Badboysjc

Badboysjc

24/10/2008

setar 2 campos ao mesmo tempo? tem sim:
with dmprincipal.sqlqryClientes do
Begin
  sqlqry.close;
  sqlqry.sql.clear;
  sqlqry.sql.add(´update CLIENTES set status =´T´, distancia = 30 where bairro =:pbairro´)
  sqlqry.params.parambyname(´pbairro´).asstring := BAIRRO_DESEJADO; //** falta esta linha**//
  sqlqry.ExecSQL;
end;


Obrigado,grande Emerson !!

Me ajudou pra caramba, até a próxima.

Abraços.


GOSTEI 0
POSTAR