Jump to content

dev botao

Banco de dados


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

Recommended Posts

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.

Link to comment
Share on other sites

  • Consultores

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.
Link to comment
Share on other sites

18 horas atrás, André Ferreira de Moraes disse:

Por favor, poste suas dúvidas diretamente no fórum.

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.

Link to comment
Share on other sites

  • Consultores
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.
Link to comment
Share on other sites

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
Link to comment
Share on other sites

  • Consultores
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.
Link to comment
Share on other sites

  • Este tópico foi criado há 2182 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.