Jump to content

dev botao

  • Este tópico foi criado há 2404 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Posted

Boa noite

  Tenho um BD no firebird e tenho um campo numerico (10,4). Uso o IBExpert e nele consigo introduzir os das manualmente com as 4 casas decimais.

Uso o Delphi XE3 no Windows 7. Quando executo o programa e clico para entrar no formulário ele não entra e da a seguinte msg de erro IBDS: Size mismatch for field 'VL_MARGEN', expecting: 8 actual: 4.

Ja pesquisei e fiz tudo o que achei, exlui e inclui de novo os campos e tudo que possam pensar e ainda continua dando o mesmo erro. Alguem pode me ajudar por favor.

  • Consultores
Posted

Quais os componentes de acesso a dados usado no Delphi? DataSnap? ADO? IBX?

Se está incluindo os campos no "Field Editor", você já tentou excluir o campo e adicionar novamente?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Posted
Em 06/09/2018 at 09:29, Fabio Alexandre Barbosa Filho Barbosa disse:

Bom dia. Como disse na pergunta, já fiz isso tudo, tirei, coloquei, refiz, comecei do zero de novo e ainda mantem o erro, não deixa colocar mais que 2 casas decimais. Uso o componente IBDataSet. 

Mas quando você iinclui no field editor qual o tipo do "Field"? TFloatField, TCurrencyField, TBCDField, TIBBCDField?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Posted (edited)

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

Edited by Fabio Alexandre Barbosa Filho Barbosa
  • Consultores
Posted
Em 15/09/2018 at 15:17, Fabio Alexandre Barbosa Filho Barbosa disse:

Procurei por varios dias em todos os sites que possa imaginar e as respostas sempre eram as mesmas (Exclua e incluar novamente os campos).

Essa é a resposta padrão, porque pelo menos em teoria, ao adicionar o TField, o Delphi deveria detectar o tipo e os tamanhos corretos. Assim essa diferença deixa de existir.

Em 15/09/2018 at 15:17, Fabio Alexandre Barbosa Filho Barbosa disse:

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;


Se isso resolveu, que ótimo!

Só dois toques...

Me parece que você está convertendo o campo para o mesmo tipo que ele já é... não faz muito sentido. Você também está usando o evento "onShow". Acho que teria mais sentido usar o evento "onCreate".

Em 15/09/2018 at 15:17, Fabio Alexandre Barbosa Filho Barbosa disse:

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.

Ao invés de adicionar o campo automaticamente (usando "Add fields..."), crie o campo manualmente selecionando o tipo e size correto (usando "New Field..."). Na tela de adicionar novo campo, você pode escolher o tipo que deseja e alterar o size, sem ter que alterar no código.

 

Em 15/09/2018 at 15:17, Fabio Alexandre Barbosa Filho Barbosa disse:

Sou novo aqui e ainda não me familiarizei com o site. Estou meio perdido. 

Abraço. 

Fábio

Não se preocupe muito. Só não esqueça das nossas regras.

Bom trabalho por aí.

 

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 2404 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...