Duvida em usar um comando update no delphi
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 !
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
Curtidas 0
Respostas
Emerson Nascimento
11/06/2010
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.
GOSTEI 0
Riatla
11/06/2010
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'
'.Process stopped. Use step or Run to continue'
GOSTEI 0
Emerson Nascimento
11/06/2010
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)
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)
GOSTEI 0
Riatla
11/06/2010
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 ?
GOSTEI 0
Riatla
11/06/2010
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?
GOSTEI 0
Riatla
11/06/2010
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
GOSTEI 0