Fórum Duvida em usar um comando update no delphi #379338

11/06/2010

0

Aê galera estou com um erro no meu programa, quejá esta me tirando do sério estou tentanto fazer um update junto com um select mas não esta dando certo... o erro que dá é que ele não acha a parte do select... vou mandar o comando qu eu faço desde o inicio....       DM.SQLProdTemp.Close;
  DM.SQLProdTemp.CommandText := 'delete from prodtemp';
  DM.SQLProdTemp.Execsql;     DM.SQLProdTemp.CommandText := 'insert into prodtemp (id_produto, des_produto, prc_vnd) select id_produto, des_produto, prc_vnd from produtos';
  DM.SQLProdTemp.ExecSql;     DM.SQLProdTemp.CommandText := 'update prodtemp set id_vendedor = ' + FloatToStr(i);
  DM.SQLProdTemp.ExecSql;     DM.SQLProdTemp.CommandText := 'update PT set prc_vnd_vendedor = Vp.prc_vnd select PT.id_produto, PT.id_vendedor, PT.prc_vnd_vendedor, Vp.prc_vnd from prodtemp PT, vendedor_produtos Vp where (PT.id_vendedor = Vp.id_vendedor and PT.id_produto = Vp.id_produto';
  DM.SQLProdTemp.ExecSql;     DM.SQLProdTemp.CommandText := 'select * from prodtemp';
  DM.SQLProdTemp.ExecSql;
  DM.SQLProdTemp.Open;     DM.CdsProdTemp.close;
  DM.CdsProdTemp.Open;   O meu erro é na parte do comando update, se alguém puder me ajudar... ficarei muito grato !
Riatla

Riatla

Responder

Posts

11/06/2010

Emerson Nascimento

como você não disse qual o banco de dados usado nem qual o erro apresentado, avaliando somente o código passado suponho que haja um erro no segundo update: logo após o where é aberto um parêntesis que não é fechado.
Responder

Gostei + 0

11/06/2010

Riatla

Desculpe.. eu esqueci de colocar o parentesis  mas o erro continua aparecendo o meu banco de dados é GDB.. o erro apresentado é esse   'Project Cartão.exe raised exception class EDATABASEERRO'R with message 'token unknown - line 1, column 45 select
'.Process stopped. Use step or Run to continue'  
Responder

Gostei + 0

11/06/2010

Emerson Nascimento

olha, não sei qual banco de dados você está utilizando (Firebird?, Interbase?), mas não sei se essa sintaxe é permitida.

no SQL Server é possível fazer algo do tipo, mas não tem a parte do select, só a partir do from. assim:

update PT set PT.prc_vnd_vendedor = Vp.prc_vnd
from prodtemp PT, vendedor_produtos Vp
where (PT.id_vendedor = Vp.id_vendedor and PT.id_produto = Vp.id_produto)

Responder

Gostei + 0

11/06/2010

Riatla

Emerson... meu banco dados é FIREBIRD ! Eu tentei usar o que você me passou e não deu certo deu o erro   Project Cartão.exe raised exception class EDATABASEERROR with message 'token unknown - line 1, column 48 from '.Process stopped   acha que o  firebird não aceita aquela minha sintaxe ?
Responder

Gostei + 0

16/06/2010

Riatla

Emerson... meu banco dados é FIREBIRD ! Eu tentei usar o que você me passou e não deu certo deu o erro   Project Cartão.exe raised exception class EDATABASEERROR with message 'token unknown - line 1, column 48 from '.Process stopped   acha que o  firebird não aceita aquela minha sintaxe ?
 estou fazendo algo de errado?
Responder

Gostei + 0

17/06/2010

Riatla

Aê galera já consegui resolver o problema usei essa linha de comando aqui e deu certo   update PRODTEMP set prc_vnd_vendedor = (select first 1 VP.prc_vnd from vendedor_produtos VP where (Prodtemp.id_vendedor = VP.id_vendedor and Prodtemp.id_produto = VP.id_produto))      valeu pela ajuda aê ! um abraço e até a próxima
Responder

Gostei + 0

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

Aceitar