Boa tarde EMBarbosa, li sua mensagem esta madrugada perguntando dos tipos de fields e te respondi que era TIBBCDField. Logo achei uma solução que podemos compartilhar com outras pessoas que venha a ter esse mesmo problema com esta mensagem de erro "IBDS: Size mismatch for field 'VL_MARGEN', expecting: 8 actual: 4.". Os números 8 e 4 podem variar de acordo com o que foi declarado na hora de criar o campo. Procurei por varios dias em todos os sites que possa imaginar e as respostas sempre eram as mesmas (Exclua e incluar novamente os campos).
Uso o IBExpert e o Firebird 2.5. No Delphi XE3 uso IBDataSet e IBQuery. Se neste dois tiverem campos numéricos com mais de 2 casas decimais, eles tem que serem definidos dentro do sistema. Vou mostrar como resolvi este problema:
Quando adicionamos os campos no Field Editor, tanto do IBDataSet como do IBQuery ele criar os campos (Fields) desta forma:
IBDSMARGEM_LUCRO: TIBBCDField;
IBQ_MLVL_MARGEN: TIBBCDField;
Ai pensei em definir eles na abertura do formulário, pois era ali que antes de abri-lo com mais frequencia acontecia o erro, na listagem abaixo esta a solução que achei para resolver.
procedure Tform_Produto.FormShow(Sender: TObject);
begin
TIBBCDField(IBDSMARGEM_LUCRO).Size := 4;
TIBBCDField(IBQ_MLVL_MARGEN).Size := 4;
PG.ActivePageIndex := 0;
Panel2.Enabled := False;
Panel3.Enabled := False;
Panel5.Enabled := False;
Panel6.Enabled := False;
Panel7.Enabled := False;
Panel8.Enabled := False;
Panel10.Enabled := False;
Busca_CB;
IBQ_Lab.Open;
IBQ_Linha.Open;
IBQ_PA.Open;
IBQ_SNGPC.Open;
IBQ_Categ.Open;
IBQ_ML.Open;
end;
O IBDS é o IBDataSet
O IBQ_ é o IBQuery
O 4 é a quantidade de casas decimais que determinei no meu campo MARGEM_LUCRO.
Bom, agradeço sua atenção e se você tiver outra solução e quiser compartilhar ela comigo eu gostaria muito e fica a vontade de compartilhar com outras pessoas. Sou novo aqui e ainda não me familiarizei com o site. Estou meio perdido.
Abraço.
Fábio