Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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
Postado

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
Postado
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.
Postado (editado)

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

Editado por Fabio Alexandre Barbosa Filho Barbosa
  • Consultores
Postado
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í.

 

  • Curtir 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á 2263 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.