Alterar registro [resultado select join] no IBexpert

Firebird

21/02/2014

Amigos

Gostaria de poder alterar um registro de um resultado de um [select join] entre duas tabelas diretamente no IBexpert.
Não quero usar o update pois tenho q analisar os resultados retornados antes da modificação.

Há algum parâmetro que eu possa passar no meu SQL select?

Obrigado.
Fightsurf

Fightsurf

Curtidas 0

Respostas

Alex Lekao

Alex Lekao

21/02/2014

Oi Fight, bom dia!!!

Nao sei se mudou, mas qdo eu usava o IBExpert eu conseguia alterar no proprio grid que eu estava analisando o resultado e so clicava no botao commit e o resultado na era gravado na tela.

Ja fiz isso varias vezes, se nao me engano eh um ticado verde o comit e um ticado vermelhor o rollback.

Nao me lembro exatamente.

Desculpe por nao ajudar mais.

Abraco.

Alex - Lekao
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

21/02/2014

Bom dia!
Você poderia postar o código para nos ajudar a entender a tua dificuldade?
GOSTEI 0
Fightsurf

Fightsurf

21/02/2014

O que eu quero é simples, talvez não tenha conseguido explicar direito. Mas agradeço a todos que leram minha dúvida.

Meu SQL é tão somente este:

select
i.descricao,
i.referencia,
p.preco
from
produtospreco p join itens i
on p.item = i.item
where
i.descricao like 'PANELA%16%'
order by
i.referencia


Por ser um [select join], o resultado retornado é [somente leitura] no IBExpert.
Gostaria poder alterar os dados retornados nele e depois comitar.
GOSTEI 0
Alex Lekao

Alex Lekao

21/02/2014

Experimente sem o Join.

faca o link sem usar o join e testa para ver se da certo.

Acredito que sim.

eu fazia normalmente.

como disse faz muito tempo que nao uso, se nao me engano nao usava join.

Experimenta assim

select
   i.descricao,
   i.referencia,
   p.preco
from
produtospreco p, itens i
where
   p.item = i.item
   i.descricao like 'PANELA%16%'
order by
   i.referencia


ve ai se da certo e nos fala.

Abraco.

Alex - Lekao
GOSTEI 0
Fightsurf

Fightsurf

21/02/2014

Olá Alex. Obrigado pela sua resposta. Não deu certo.

No oracle eu faço o mesmo incluindo o termo "for update" no final do comando.
GOSTEI 0
Alex Lekao

Alex Lekao

21/02/2014

OI Bom dia!!!

Estranho, eu sempre usei no IBExpert e dava certo as alteracao, so tinha que clicar no botao commit ou executar o comando comit mesmo.

Infelizmente nao poderei ajudar, desculpe.

Abraco.

Alex - Lekao
GOSTEI 0
Hermeson Gonçalves

Hermeson Gonçalves

21/02/2014

vc conseguiu resolver isso? eu estou com o mesmo problema
GOSTEI 0
Fightsurf

Fightsurf

21/02/2014

Não consegui.

Ainda hoje não consigo alterar estes dados.
Mas, também, não mais pesquisei.
GOSTEI 0
Huidemar Costa

Huidemar Costa

21/02/2014

Qual a estrutura da tabela?

E qual das duas tabelas você quer fazer o update?
GOSTEI 0
Rafael Bosco

Rafael Bosco

21/02/2014

Utilize o Execute Block amigos...
    EXECUTE BLOCK
AS
    DECLARE VARIABLE DESCRICAO VARCHAR (50);
    DECLARE VARIABLE REFERENCIA VARCHAR (20);
    DECLARE VARIABLE PRECO NUMERIC (18,4);
BEGIN
    FOR
    SELECT
        I.DESCRICAO,
        I.REFERENCIA,
        P.PRECO
    FROM PRODUTOSPRECO P
    JOIN INTES I
    ON P.ITEM = I.ITEM
    WHERE I.DESCRICAO LIKE 'PANELA%16%' INTO :DESCRICAO, :REFERENCIA, :PRECO
    DO
    BEGIN
       -- FAÇA O UPDATE AQUI
       UPDATE PRODUTOSPRECO T SET T.PRECO = :PRECO;
    END
END



GOSTEI 0
Huidemar Costa

Huidemar Costa

21/02/2014

Acredito que não precisa fazer um execute block para essa situação, pelo que parece o IBExpert, não está conseguindo montar o update pois está faltando a chave primária da tabela que ele quer fazer o update:

    SELECT
        I.ID, // suponhamos que ele quer alterar a tabela item e o campo ID seja chave primaria 
        I.DESCRICAO,
        I.REFERENCIA,
        P.PRECO
    FROM PRODUTOSPRECO P
    JOIN INTES I
    ON P.ITEM = I.ITEM
    WHERE I.DESCRICAO LIKE 'PANELA%16%'
GOSTEI 0
Rafael Bosco

Rafael Bosco

21/02/2014

Na verdade, ele nunca conseguirá executar um update usando JOIN ou INNER JOIN, pelo fato da conexão entre as duas tabelas... tem que usar o execute block
GOSTEI 0
Huidemar Costa

Huidemar Costa

21/02/2014

Na verdade, ele nunca conseguirá executar um update usando JOIN ou INNER JOIN, pelo fato da conexão entre as duas tabelas... tem que usar o execute block


Entendi
GOSTEI 0
POSTAR