Fórum Duvida em usar um comando update no delphi #379338
11/06/2010
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 !
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.
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'
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)
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 ?
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?
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