Ajuda com erro Field XXX cannot be modified Delphi 10 Seattle
Bom dia,
Aqui na empresa estamos convertendo o sistema que era em Delphi 7 para Delphi 10 Seattle.
Surgiu um problema na hora da conversão pois em algumas telas utilizamos o componente TIBQuery para realizar as consultas no banco de dados (Firebird 3.0).
Utilizamos um TClientDataSet ligado a um TDataSetProvider e este ligado ao TIBQuery. Acontece que dentro do meu SQL eu tenho alguns campos "Fantasmas", por exemplo: "0.00 as Percentual". Estes campos são utilizados e alimentados através de um Edit no TClientDataSet em tempo de execução, porém agora no Delphi 10 ocorre um erro de "Field PERCENTUAL cannot be modified". Algumas coisas que já verifiquei e detalhes da rotina:
- O field está vindo como "ReadOnly", o que imagino que pode estar gerando esse problema. No delphi 7 isso não acontecia;
- Não adianta eu adicionar todos os campos da Query no cds (2 clicks no cds > add fields) e trocar a propriedade, pois a query é alterada em tempo de execução de acordo com as opções dos usuários, e se eu faço isso ocorre em alguns campos erro de "Field not found";
- Mesmo alterando a propriedade FieldDefs > Attributes > faReadOnly para false, o erro persiste;
Alguém saberia como ajustar isso? Teria alguma propriedade que eu deveria (des) marcar?
Obrigado.
Aqui na empresa estamos convertendo o sistema que era em Delphi 7 para Delphi 10 Seattle.
Surgiu um problema na hora da conversão pois em algumas telas utilizamos o componente TIBQuery para realizar as consultas no banco de dados (Firebird 3.0).
Utilizamos um TClientDataSet ligado a um TDataSetProvider e este ligado ao TIBQuery. Acontece que dentro do meu SQL eu tenho alguns campos "Fantasmas", por exemplo: "0.00 as Percentual". Estes campos são utilizados e alimentados através de um Edit no TClientDataSet em tempo de execução, porém agora no Delphi 10 ocorre um erro de "Field PERCENTUAL cannot be modified". Algumas coisas que já verifiquei e detalhes da rotina:
- O field está vindo como "ReadOnly", o que imagino que pode estar gerando esse problema. No delphi 7 isso não acontecia;
- Não adianta eu adicionar todos os campos da Query no cds (2 clicks no cds > add fields) e trocar a propriedade, pois a query é alterada em tempo de execução de acordo com as opções dos usuários, e se eu faço isso ocorre em alguns campos erro de "Field not found";
- Mesmo alterando a propriedade FieldDefs > Attributes > faReadOnly para false, o erro persiste;
Alguém saberia como ajustar isso? Teria alguma propriedade que eu deveria (des) marcar?
Obrigado.
Windel Ltda
Curtidas 0
Respostas
Windel Ltda
31/10/2017
Atualizando: Testei com um banco Firebird 2.5 e 2.0 e em ambos o field n ficou como read only.
GOSTEI 0
José Menezes
31/10/2017
Já tentou?
criar outro campo similar e testar?
renomear este campo?
Recriar o campo?
criar outro campo similar e testar?
renomear este campo?
Recriar o campo?
GOSTEI 0
Windel Ltda
31/10/2017
Sim, já fiz isso...
Acontece em outros campos também, mas apenas se for Firebird 3.0.
Em todos os que não estão fixos no BD, por exemplo, quando seleciono dessas formas:
0.00 AS PERCENTUAL,
0.00 AS QTDADE,
CAST(NULL AS DATE) AS DTAMOV
ou
EXTRACT(MONTH FROM DTAMOV) AS MES_MOV
São alguns exemplos, mas em todos que são assim acontece isso.
Acontece em outros campos também, mas apenas se for Firebird 3.0.
Em todos os que não estão fixos no BD, por exemplo, quando seleciono dessas formas:
0.00 AS PERCENTUAL,
0.00 AS QTDADE,
CAST(NULL AS DATE) AS DTAMOV
ou
EXTRACT(MONTH FROM DTAMOV) AS MES_MOV
São alguns exemplos, mas em todos que são assim acontece isso.
GOSTEI 0
Diogo Silva
31/10/2017
No object Inspector clique no seu field e veja se está marcado a propriedade ReadOnly, caso estiver desmarque
GOSTEI 0