FDQuery atualizando só alguns campos

Delphi

Firebird

CRUD - Delphi

13/11/2023

Olá, pessoal
Resumidamente, tenho no meu BD Firebird uma tabela PESSOA e outra tabela ESTADO, bem como um componente FDQuery, no Delphi, que tem o comando abaixo:
SELECT ID, TIPO, NOME, CNPJCPF, RAZAO, CEP, ENDERECO, NUMERO, COMPLEMENTO, BAIRRO, E.NOME AS ESTADO, E.ID AS ID_ESTADO, FROM PESSOA AS P INNER JOIN ESTADO AS E ON E.ID = P.ID_ESTADO

(Tem também a tabela de município com a mesma lógica mas simplifiquei para deixar mais simples)
A questão é que consigo ler e atualizar os dados dessa query, exceto pelo campo ID_ESTADO. Ele é até lido, mas não consigo fazer um Post de forma que ele seja gravado. E a propriedade readOnly desse campo está em False (curiosamente veio como true).
Alguma luz do que pode estar impedindo a sua atualização?
André Duarte

André Duarte

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

13/11/2023

Talvez o componente esteja interpretando que este resultado é "principalmente" da tabela PESSOA. Todas as colunas que não são da tabela PESSOA provavelmente apresentam o mesmo problema.

Se você quer fazer a atualização via grid, com múltiplas tabelas envolvidas, provavelmente terá que escrever o código que faça o update correspondente a cada tabela, separadamente.
GOSTEI 0
André Duarte

André Duarte

13/11/2023

Talvez o componente esteja interpretando que este resultado é "principalmente" da tabela PESSOA. Todas as colunas que não são da tabela PESSOA provavelmente apresentam o mesmo problema.

Se você quer fazer a atualização via grid, com múltiplas tabelas envolvidas, provavelmente terá que escrever o código que faça o update correspondente a cada tabela, separadamente.


A ideia vai ser atualizar um campo por vez, embora haja um DBGrid listando. Inclusive coloquei as tabelas ESTADO e MUNICIPIO naquele DropDownList que puxa os campos de 2 datasets simultâneos, um da respectiva tabela e outro da query. Eles listam corretamente os estados e cidades pelo nome.

Em último caso usarei um FDCommand setando manualmente estes campos após o post do FBQuery principal, na linha do que vc falou acima.

Obrigado pela resposta!
GOSTEI 0
POSTAR