Fórum Alterar registro [resultado select join] no IBexpert #470784

21/02/2014

0

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

Responder

Posts

21/02/2014

Alex Lekao

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
Responder

Gostei + 0

21/02/2014

Marisiana Battistella

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

Gostei + 0

21/02/2014

Fightsurf

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.
Responder

Gostei + 0

21/02/2014

Alex Lekao

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
Responder

Gostei + 0

06/03/2014

Fightsurf

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.
Responder

Gostei + 0

06/03/2014

Alex Lekao

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
Responder

Gostei + 0

13/04/2016

Hermeson Gonçalves

vc conseguiu resolver isso? eu estou com o mesmo problema
Responder

Gostei + 0

14/04/2016

Fightsurf

Não consegui.

Ainda hoje não consigo alterar estes dados.
Mas, também, não mais pesquisei.
Responder

Gostei + 0

15/04/2016

Huidemar Costa

Qual a estrutura da tabela?

E qual das duas tabelas você quer fazer o update?
Responder

Gostei + 0

15/04/2016

Rafael Bosco

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



Responder

Gostei + 0

15/04/2016

Huidemar Costa

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%'
Responder

Gostei + 0

15/04/2016

Rafael Bosco

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
Responder

Gostei + 0

15/04/2016

Huidemar Costa

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
Responder

Gostei + 0

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

Aceitar