Fórum Inserir Autoincremento em outra tabela.... #298705

07/10/2005

0

Awe.....
Galera preciso novamente da ajuda de vcs!!!!
Tenho Uma Tabela chamado ROMANEIO, ela tem um campo chamado ID_ROMANEIO, esse campo eh autoincremento...até ai tudo bem, ele gera o número e etc...
Eu tenho outra tabela, chamada ENCOMENDAS, ela possui um campo chamado ROMANEIO.
Eu preciso gerar um número para o ID_ROMANEIO e ´jogar´ esse número no campo ROMANEIO de algumas encomendas, algumas nem todas, ai vcs me falam, gera pega o número, vai na tela de cadastro e coloca no campo....não eu naum qro isso, eu qro fazer isso apenas clicando em um botão!!!!
Entaum pensei nesse código:

with DM.qry do
begin
  Close;
  SQL.Clear;
  SQL.Add (´Update encomendas´);
  SQL.Add (´set Romaneio = :roman where ID_ENCOMENDA = :encomenda´);
  Params[0].AsInteger := StrtoInt(Edit1.Text);
  Params[1].AsInteger := StrtoInt(Edit2.Text);
  ExecSQL;
  Open;
  Close;
  SQL.Add (´select * from encomendas where Romaneio = :roman´);
  Params[0].AsInteger := StrtoInt(Edit2.Text);
  ExecSQL;

Só q ele me retorna o erro Cursor not returned from query....
Alguém sabe como resolver? ou tem uma forma melhor para resolver isso?????
Utilizo Firebird e DBExpress...
Agradeço desde já, obrigado!!!!!!!!!


Ramms

Ramms

Responder

Posts

07/10/2005

Rjun

Tira esse open/close depois do primeiro ExecSQL. Não tem o minimo sentido esses comandos aí.


Responder

Gostei + 0

07/10/2005

Ramms

mas ele faz a função funcionar???


Responder

Gostei + 0

07/10/2005

Rjun

Se você falasse onde ocorre o erro ficaria mais fácil. Outra coisa, esse segundo ExecSQL está errado. Para comandos SELECT, utilize Open. Para comandos Insert/Update/Delete, utilize ExecSQL.


Responder

Gostei + 0

07/10/2005

Ramms

Se você falasse onde ocorre o erro ficaria mais fácil. Outra coisa, esse segundo ExecSQL está errado. Para comandos SELECT, utilize Open. Para comandos Insert/Update/Delete, utilize ExecSQL.


O erro ocorre na hr que eu clico no botão...em run time....
Vlw...


Responder

Gostei + 0

07/10/2005

Vinicius2k

Colega,

Vc está se esquecendo de limpar a SQL da query, então, a segunda execução está ´misturada´ à primeira. Além é claro do que o RJun já lhe disse.

Close; 
SQL.Clear; 
SQL.Add (´Update encomendas´); 
SQL.Add (´set Romaneio = :roman where ID_ENCOMENDA = :encomenda´); 
Params[0].AsInteger := StrtoInt(Edit1.Text); 
Params[1].AsInteger := StrtoInt(Edit2.Text); 
ExecSQL; 
//
SQL.Clear;
SQL.Add (´select * from encomendas where Romaneio = :roman´); 
Params[0].AsInteger := StrtoInt(Edit2.Text); 
Open;



Responder

Gostei + 0

07/10/2005

Ramms

[quote:ecb279f16a=´Rjun´]Se você falasse onde ocorre o erro ficaria mais fácil. Outra coisa, esse segundo ExecSQL está errado. Para comandos SELECT, utilize Open. Para comandos Insert/Update/Delete, utilize ExecSQL.


O erro ocorre na hr que eu clico no botão...em run time....
Vlw...[/quote:ecb279f16a]

Detalhe, esse erro ocorre tanto em Query´s e ClientDataSet...


Responder

Gostei + 0

07/10/2005

Vinicius2k

Vc leu minha resposta? :roll:


Responder

Gostei + 0

07/10/2005

Ramms

Vc leu minha resposta? :roll:


HEUIAHUIEUheaiHUIEHie vc postou ao msm tempo que eu kra, malz...

Testei o seu Vinicius e ´funcionou´ só num tha dando o UPDATE que eh o que eu preciso, simplesmente ele não dah o update.....
o código ficou assim
with DM.qry do
begin
Close;
SQL.Clear;
SQL.Add (´UPDATE ENCOMENDAS SET ROMANEIO = :roman WHERE ID_ENCOMENDA = :encomenda´);
Params[0].AsInteger := StrtoInt(Edit1.Text);
Params[1].AsInteger := StrtoInt(Edit2.Text);
ExecSQL;
//
end;
with DM.ClientDataSet4 do
begin
Close;
CommandText := (´select * from encomendas where Romaneio = :roman´);
Params[0].AsInteger := StrtoInt(Edit2.Text);
Open;


Eu estou usando o CDS ai no final para listar num DBGRID....

vlw


Responder

Gostei + 0

07/10/2005

Ramms

Alguém?


Responder

Gostei + 0

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

Aceitar